Кръстосано компилиране за Win32 под Linux

Бележки относно кръстосаното компилиране на изпълними файлове на Win32 от Linux

От 0.9.10 има rpm 'fpc-crosswin32', който инсталира необходимите помощни програми binutils (напр. Крос асемблер, крос линкер), fpc .ppu файлове, компилирани за win32 и промени /etc/fpc.cfg.

Той не включва компресирани LCL .ppu файлове. Трябва да ги компилирате сами след инсталирането, fpc-crosswin32.

Лазар и свободен съставител на Паскал

Това е кратко въведение за начинаещи. Следващите раздели описват как да настроите системата за кръстосана компилация, което означава да работите под Linux за създаване на изпълними файлове win32 (или freebsd, или dawin или.) Защо кръстосано компилиране: FreePascal е компилатор, който преобразува изходния код в изпълними файлове (на машинен език). Тези изпълними файлове, освен всичко друго, съдържат информация за това как операционната система ги стартира за изпълнение. Следователно изпълнимите файлове са специфични за платформата. Самият FreePascal не изисква различни дистрибуции. Той може да създава изпълними файлове за много платформи. Просто му го посочете. Но компилаторът е само една част. Има и асемблер и линкер. И тези помощни програми не могат да генерират междуплатформен код. Следователно бяха създадени специални помощни програми за свързване 'ld' и асемблер 'като' за всяка целева платформа. Това е binutils. След създаването на помощни програми за различни платформи, всички модули fpc pascal ще бъдат компилирани. Например има отделен файл system.ppu за всяка целева платформа. Тогава вашият конфигурационен файл fpc.cfg ще бъде преконфигуриран, така че кръстосаното компилиране е толкова лесно, че можете да забравите за всички малки неща. Същото трябва да се направи и с LCL - библиотеката на компонентите lazarus. И след това можете да компилирате програми за паскал за win32. След това ги тествайте с вино или ги копирайте на машина с Windows и ги тествайте.

Защо от * nix до windows и не по различен начин.

Основната причина е по-трудно генерирането на двоични файлове на unix на друга платформа (друга unix или Linux). По-сложно статично свързване, да не говорим за останалото.

Ще трябва да използвате библиотеки от целевата платформа (gtk, glib, libc и др.) И много допълнителни настройки за ld. (пътища до библиотеки, път към линкер и т.н.)

Това беше частично направено (в статичния случай), но е трудно. изисква промени в файловете на линкера и командния ред на линкера, както и задълбочено разбиране за изграждането на двоични файлове на Unix.

Изтегляне на изходни кодове на FPC

Няма достатъчно изпълними файлове, имате нужда от всички fpc източници. Обърнете се към www.freepascal.org. Можете да използвате SVN или ежедневни компилации. За следващите примери източниците на fpc бяха изтеглени в папката

Изтеглете gnu binutils.

Например изтеглете binutils-2.18.tar.gz от

Изграждане на binutils на различни платформи

Репозиторият fpcbuild съдържа скрипт за изграждане на binutils за всички поддържани целеви платформи: install/cross/buildcrossbinutils

Изтеглете инсталатора на fpcbuild:

Създайте копие на скрипта:

Редактиране на променливи в началото на нов скрипт.

Променливата BASE сочи към директорията за изграждане и инсталиране. Директорията трябва да е празна. Например:

Сега нека се заемем с изтегления файл binutils. Ако пътят до изтегления файл

/download/binutils-2.18.tar.gz след това посочваме

Скриптът автоматично ще събере това в

/download/binutils-2.18.tar.gz. Останалите променливи определят кои целеви платформи имаме. По подразбиране има доста, така че компилацията може да отнеме много време (часове на слаби машини). За кръстосано компилиране за Windows ви трябва само


След това стартирайте скрипта:

Скриптът ще създаде поддиректорията „дневници“ с подходящото съдържание. В такъв случай започнете търсенето си от там.

Имайте предвид, че за някои платформи (Linux, FreeBSD, win32) помощните програми се предлагат в компилирана форма. Вижте ftp://freepascal.stack.nl/pub/fpc/contrib/cross/

FPC изграждане на различни платформи

Репозиторият fpcbuild съдържа скрипт за изграждане на fpc за всички поддържани целеви платформи: install/cross/buildcrosssnapshot Създаване на копие на скрипта

Коригирайте променливите в началото на новия скрипт.

Всичко, което трябва да промените, е CROSSTOOLSROOT, FPCCVS, DESTDIR, TARGETS_OS и TARGETS_CPU. Например: