Изучаю кросскомпиляцию.
Возник вопрос: простенькое cgi приложение "hello world" для win32 весит 190 КБ, а для FreeBSD 530 КБ. Собственно вопрос - это нормально?
Приложение и там и там работает - результат выдает, но почему размер для FreeBSD в четыре раза больше?
Предупреждая возмущения: форум читаю, i386-freebsd-strip.exe пользуюсь, галочки "вырезать символы" и "внешний файл отладки" стоят.
Может для FreeBSD необходимо что-то еще?
Большой файл для FreeBSD
Модератор: Модераторы
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
А модули собраны с поддержкой smartlink?
Иван Шихалев писал(а):А модули собраны с поддержкой smartlink?
А кстати вопрос. Официальные бинарники FPC идут откомпилированные с данной опцией?
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
Да, умное связывание
Добавлено спустя 54 минуты 29 секунд:
Прошу прощения, ввел в заблуждение сообщество. Программа откомпилирована с "умным связыванием", а все модули с помощью make TARGET_OS=freebsd.
Я посмотрел - все по разному что-то с умным связыванием что-то нет. А как это исправлять? С синтаксисом make знаком слабо - на уровне простейших скриптов, а там файлы по 100 КБ! Неужели придется все их перебирать?
Добавлено спустя 54 минуты 29 секунд:
Прошу прощения, ввел в заблуждение сообщество. Программа откомпилирована с "умным связыванием", а все модули с помощью make TARGET_OS=freebsd.
Я посмотрел - все по разному что-то с умным связыванием что-то нет. А как это исправлять? С синтаксисом make знаком слабо - на уровне простейших скриптов, а там файлы по 100 КБ! Неужели придется все их перебирать?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Не нужно особо глубоко лезть в makefile... Параметры командной строки комилятора передаются с помощью OPT, т.е. нужна команда вроде:
Код: Выделить всё
make TARGET_OS=freebsd OPT="-CX -XX"- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
Великолепно!
make OS_TARGET=freebsd OPT="-Os -O3 -CX -XX -Xs -Xg"
Файл весивший 530 КБ стал весить 88КБ и работать быстрее (несмотря на флаг "приоритет размера над скоростью"). О скорости судил по логам сервера.
Всем спасибо!
Только теперь получается файл для win32 в два раза "жирнее". Хоть это и не принципиально - но получается модули для win32 тоже стоит перебрать?
make OS_TARGET=freebsd OPT="-Os -O3 -CX -XX -Xs -Xg"
Файл весивший 530 КБ стал весить 88КБ и работать быстрее (несмотря на флаг "приоритет размера над скоростью"). О скорости судил по логам сервера.
Всем спасибо!
Только теперь получается файл для win32 в два раза "жирнее". Хоть это и не принципиально - но получается модули для win32 тоже стоит перебрать?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Не факт, потому что для Windows используется встроенный линкер, который "умный" без дополнительных телодвижений. Но попробуй, мало ли...
