Но сопровождается это воплем:
Linking ../_demo001.dll
/usr/bin/fpc-i386-win32-dlltool: Path components stripped from dllname, '../_demo001.dll'.
/usr/bin/fpc-i386-win32-dlltool: Unable to open object file:
_demo001.dpr(79,1) Error: Error while linking
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
и Лазарь швыряет меня из моей позиции в окне редактора к последней строчке главного *.dpr файла -- что ужасно раздражает, поскольку случается при каждой компиляции.
Есть идеи, какого беса этому fpc-i386-win32-dlltool надо?
мой build.sh:
- Код: Выделить всё
rm ../../../temp/*
rm ../lib_demo001.so
fpc _demo001.dpr -dcge -dnotlaz -O2 -Op3 -Or -Sd -Sh -Sc -Rintel -Fi../../cge/src -FE../ -FU../../../temp
strip -s ../lib_demo001.so
upx ../lib_demo001.so
Соответственно, готовый продукт кладётся в папку одним уровнем выше, чем исходники. build.sh вызывается Лазарем вместо штатного вызова компилятора.
2. При компиляции под Линь lib*.so получаются в *три* раза больше объёмом (два метра, strip обрезает лишь до полутора) чем собранные из тех же сорцов *.dll. Причём, upx их не жмёт:
upx: ../lib_demo001.so: UnknownExecutableFormatException
Код - чистый fpc, из модулей подключаю самый минимум: classes, x, xlib, xutil, dl. Откуда этот лишний мегабайт выползает? Прилинковывает оно что-нибудь, что-ли?
Причём заметьте, программа-матка, использующая практически тот же набор модулей, получается не больше 600 килобайт.
В результате, виндовский игровой модуль занимает раз в двенадцать меньше места, чем линуксовый. Конечно, нынче это не проблема, но мне сверхмалые размеры исполняемых файлов нужны как раз для понтов.