Боже, храни андеграунд!
Кросс-компиляция из Windows 11 в.. Linux 0.11 от 1991 года. Нет, вашей любимой Убунты тогда еще не было даже в планах.
Из исторического readme от 12/9/1991:
1. WHAT IS LINUX 0.11 LINUX 0.11 is a freely distributable UNIX clone. It is almost fully System V compatible. LINUX has been written from scratch, and therefore does not contain any AT&T or MINIX code--not in the kernel, the compiler, the utilities, or the libraries. For this reason it can be made available with the complete source code via anonymous FTP. Sorrily, it runs only on 386/486 AT-bus-machines. EISA will probably do too, but you need an AT-Bus controller for your harddisk. Version 0.11 is still a beta release, but it provides almost full functionality. Various users have been able to compile bigger projects like bison/flex by only changing the makefile to their needs, and these tools are fully functional.
Вообщем дела давно минувших дней, а весь прикол подобной кросс-компиляции заключается в тщательном подборе тулчейна, поскольку современные компиляторы разумеется не дадут собрать приложение под столь древнюю версию Линукса.
Спасибо дяде neozeed, который знает толк в особых удовольствиях и подготовил для вас весь тулчейн, по мотивам его статьи я и пишу этот пост.
Для начала будет необходимо скачать тулчейн и образ Linux 0.11 сразу с эмулятором Qemu.
Если по ссылкам файлы более не будут доступны, их можно скачать на нашем канале в Телеграм.
Тулчейн
Распаковываете архив каталог без пробелов, что-то простое вроде:
c:\work\linux011
Нужно будет исправить файл env.bat, который находится в корне тулчейна, поскольку в нем задаются полные пути:
set path=c:\work\linux011\aoutgcc\bin;c:\mingw\msys\1.0\bin;%PATH% set GCCLIB=c:\work\linux011\aoutgcc\lib title GCC-1.40_a.out
MinGW ставить не нужно и путь к нему можно убрать — он очевидно использовался для компиляции самого тулчейна из исходников.
Запуск компиляции необходимо производить с предварительным запуском env.bat:
В каталоге test находится тестовое приложение и скрипт для сборки с_.cmd
c_ hello
Должен появиться файл hello в этом же каталоге test:
Для того чтобы перекинуть собранный бинарник в эмулятор с Linux 0.11 автор делает хитрый финт ушами: упаковывает бинарник в tar, а затем монтирует этот tar в качестве floppy-диска в эмуляторе Qemu.
..\bin\tar.exe cvf hello.tar hello
Сам архиватор находится в каталоге bin, вместе с компилятором и линковщиком, после запуска должен появиться файл hello.tar.
Эмулятор
Распаковываем архив с эмулятором, кладем в соседний каталог с тулчейном:
c:\work\linux011
Должно получиться что-то вроде:
Наконец запускаем эмулятор, указав собранный архив в качестве параметра:
cd c:\work\linux011\qemu-12.5.i386 qemu -L pc-bios -hda linux-0.11-devel-060625.qcow2 -no-reboot -m 16 -k en-us -fda ..\aoutgcc\test\hello.tar
Произойдет запуск эмулятора и выбор устройства для загрузки:
Нужно нажать цифру 1, произойдет запуск в "Single Mode", без авторизации:
Теперь необходимо со стороны запущенного Linux выполнить:
tar -xvf /dev/fd0
Это распакует архив, подключенный в качестве floppy-диска, появится файл hello — та самая сборка, созданная в Windows:
chmod +x ./hello
Установит бит запуска, ну и собственно запуск:
./hello