This page is dedicated to the programmers who want to:
You will find here gcc
, g++
, as
, ld
,
and other tools configured to produce executables for the Atari ST.
It means that you can use all the latest C++ features, such as templates,
exceptions, STL, as well as inline assembly, to build software which will run on your old Atari ST.
Original sources are provided, as well as the patches and build scripts.
It would be easy to recompile them on any operating system already supporting the GNU tools.
Feel free to redistribute, recompile, and improve the packages,
with respect to their own licenses.
The MiNT patches were originally written by Guido Flohr and Frank Naumann in 1998 for the FreeMiNT project. I upgraded them to newer binutils and GCC versions starting from 2007. Then I switched to the m68k-atari-mintelf target in 2023, after having designed a new PRG/ELF file format. Many C++ patches for newer GCC, as well as MiNTLib and FDLIBM improvements were added by Thorsten Otto.
m68k-atari-mintelf-
,
such as m68k-atari-mintelf-gcc
, m68k-atari-mintelf-g++
,
and even read the man pages.
Everything is installed in /opt/cross-mintelf
.
If you want to completely uninstall the tools, you just have
to remove that directory.
Packages history is available here.
This toolchain is still experimental, however everything should work fine.
Just use m68k-atari-mintelf-gcc
and so on.
I've successfully compiled and tested a bunch of FreeMiNT software using this toolchain:
this is the proof that it's reliable.
Important: This toolchain, like other ELF toolchains, doesn't use the "leading unserscore".
This means that if you mix C and assembly language, a C variable named myvar
will appear with the same name myvar
in assembly code (not _myvar
, unlike older toolchains).
The __USER_LABEL_PREFIX__
define is set to nothing on ELF compilers (while it was set to '_' on older compilers).
The -Wl,--traditional-format option isn't available yet. The symbols can't be loaded in old debuggers such as MonST2.
You can use GDB on a FreeMiNT environment to debug the programs built using this toolchain. Just add the -g option to the gcc command line when compiling and linking.
Some libraries use pkg-config to describe the required flags for their usage.
Use the m68k-atari-mintelf-pkg-config
tool for usage with the cross-compiler.
You can use the --list-all
option to see all the supported libraries.
If you use a custom startup code and gcc -nostartfiles
,
you must define a global label named _start
at the beginning.
This will ensure that your startup code is properly set as entry point.
If you don't do that, your program may not work, and you will get a linker warning:
warning: cannot find entry symbol _start; defaulting to 000000a0
.
This software is freely provided by Vincent Rivière. There is no warranty of any kind.
Back to the software page