Building an AmigaOS Development Environment in 2026

jackdaniel1 pts1 comments

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...

amigaos amiga toolchain amiberry emulator branch

Related Articles