TurtleWare<br>Building an AmigaOS Development Environment in 2026
Tagged as retrocomputing, amiga, gcc, linux<br>Written on 2026-07-20 by Daniel Kochmański<br>Table of Contents
Prerequisites
Toolchain
Emulator
Installation
Running executables
Remote debugging
Summary
Resources
Apropos of nothing, I decided to set up an Amiga development environment. Since<br>figuring things out wasn't straightforward, I wrote down instructions for Linux<br>about how to compile the first program and run it in an emulator. Enjoy!
Prerequisites
In this post I'm assuming that the reader is a proficient Linux user who can<br>build software from source code and figure out missing dependencies. Standard<br>build tools should be sufficient to get started. Basic understanding of shell<br>commands is also expected. More detailed instructions on how to build the<br>toolchain are available here: https://franke.ms/amiga/amiga-gcc.wiki.
Another rather problematic requirement is that to run AmigaOS, you need ROM<br>images (firmware) and workbench disks (installation media). They may be bought<br>from legal sources or dumped from owned hardware. Alternatively one could use<br>the AROS ROM that is shipped with the emulator, although it is known to have<br>worse compatibility with standard Amiga software.
Toolchain
To build programs for AmigaOS we need the compiler. A popular tool is amiga-gcc.<br>First I tried to use the default (the most battle-tested) GCC branch, but while<br>the produced executable worked, loading the binary in m68k-amigaos-gdb caused<br>a segmentation fault. After some trial and error I reported the issue and the<br>toolchain maintainer, Stefan 'bebbo' Franke, kindly explained that the toolchain<br>now produces DWARF2 debug info and then fixed a bug in embedding debug sections<br>in the final executable. I've finally settled on a branch amiga16.1 for GCC<br>and on a branch amiga-2.46 for binutils (it contains the abovementioned fix).
Note that make update may fail due to connection errors. In that case rerun it<br>until everything is downloaded. Both make update and make all may take some<br>time - on my machine everything takes about 1 hour.
export WORKSPACE=${HOME}/Workshop/AmigaOS<br>export TOOLCHAIN=${WORKSPACE}/amiga-gcc-toolchain<br>export PREFIX=${TOOLCHAIN}<br>mkdir -p ${WORKSPACE}<br>cd ${WORKSPACE}<br>git clone https://franke.ms/git/bebbo/amiga-gcc.git<br>pushd amiga-gcc<br>make branch branch=amiga16.1 mod=gcc<br>make branch branch=amiga-2.46 mod=binutils<br>make update<br>make all<br># Check whether the compiler works. SDL1.2 build failed on my host, but it is<br># not needed.<br>${TOOLCHAIN}/bin/m68k-amigaos-gcc -v<br>popd
Now we have a working AmigaOS toolchain. It supports a few different<br>runtime/libc versions. When nothing is specified it defaults to newlib.
export WORKSPACE=${HOME}/Workshop/AmigaOS<br>export TOOLCHAIN=${WORKSPACE}/amiga-gcc-toolchain<br>export PATH=${TOOLCHAIN}/bin:${PATH}<br>mkdir Shared<br>pushd Shared<br>cat > woosh.c
void hi(void) {<br>printf("jd was here \\\o/\n");
int main() {<br>hi();<br>return 0;<br>EOF<br>m68k-amigaos-gcc -g woosh.c -o woosh.out<br>file woosh.out<br># woosh.out: AmigaOS loadseg()ble executable/binary<br>popd
Congratulations! We've just built our first AmigaOS program. It seems that<br>file has a bit of a problem parsing AmigaOS executables, but the binary works.
Emulator
Now how to run this file? We need two pieces:
the emulator
AmigaOS ROMs
Obtaining the emulator is straightforward. I picked Amiberry, because it<br>provides a good developer experience - built-in bsdsocket.library, virtual<br>hard disks and shared directories, and it works well on Linux. Another good<br>contender is FS-UAE. Both should work well. They have binary releases or we can<br>build them from source. We'll install Amiberry from Flathub:
flatpak install flathub com.blitterstudio.amiberry
Obtaining ROMs is a bit harder. If you own the original hardware you may already<br>have a legal dump. Otherwise you may buy them from https://www.amigaforever.com/<br>or https://www.hyperion-entertainment.com/. Assuming that you have ROMs, we may<br>start the emulator and configure our target system.
We need the following files:
ROM file: kick.a1200.46.143
floppies: Install314.adf, Workbench314.adf, etc
mkdir -p Amiberry/{ROMs,Floppies}<br># Amiberry expects .a1200 file extension (it doesn't recognize .46.143)<br>cp Nero/ROMs/kick.a1200.46.143 Amiberry/ROMs/kick.a1200<br>cp Nero/Floppies/*.adf Amiberry/Floppies<br>flatpak run com.blitterstudio.amiberry
Now navigate to the "Paths" tab and configure them to point to the directory<br>"Amiberry" that we just created. Confirm when prompted to create<br>subdirectories. Then click the "Rescan Paths" button and go back to the<br>"Quickstart" tab.
Amiga hardware has a few distinct flavors with different hardware configurations<br>and running variations of M68K CPU. RAM is divided between the "chip memory"<br>that is accessible directly by custom chips (graphics, audio and DMA) and "fast<br>memory" - general-purpose RAM. The first one is usually 1-2 MB, while the latter<br>can typically be expanded to something like 4 MB of Fast...