Оптимизация кода в fpc-2.2.4
Модератор: Модераторы
Оптимизация кода в fpc-2.2.4
Версия для линукса. 22% кода скомпилированной программы занимают имена функций и прочая ненужная литература. В предыдущих версиях компилятора для уменьшения веса программ необходимо было в файле fp.cfg прописать ключи -Xs В этом компиляторе они стоят по умолчанию, что ещё нужно сделать для оптимизации скомпилированного кода?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
[Вообще-то это ни к коду, ни к оптимизации не относится. Это отладочная информация.]
Как я замечал, если указан какой-либо из ключей, начинающихся на -g, то ключ -Xs не действует. Так что желательно убедиться в отсутствии -g и подобных.
А может быть, это просто баг. Потому что отладочная информация вроде бы и есть, но отлаживаться не получается. Пересобираешь с -gl -- файл становится еще больше, и тогда отладка начинает работать.
Ну и, конечно, strip этот мусор вполне успешно убирает.
Как я замечал, если указан какой-либо из ключей, начинающихся на -g, то ключ -Xs не действует. Так что желательно убедиться в отсутствии -g и подобных.
А может быть, это просто баг. Потому что отладочная информация вроде бы и есть, но отлаживаться не получается. Пересобираешь с -gl -- файл становится еще больше, и тогда отладка начинает работать.
Ну и, конечно, strip этот мусор вполне успешно убирает.
В линуксовом компиляторе нет утилты strip
Удалил все ключи кроме -TLinux -XS и тех что с путями, после запуска -g- опять появился, но он и в 2.2.0 был и не мешал. Файл получился немного меньше но мусор остался. Если это неисправимый баг, то кроме исключительных случаев теряется смысл в новом компиляторе.
Удалил все ключи кроме -TLinux -XS и тех что с путями, после запуска -g- опять появился, но он и в 2.2.0 был и не мешал. Файл получился немного меньше но мусор остался. Если это неисправимый баг, то кроме исключительных случаев теряется смысл в новом компиляторе.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
В линуксах утилита strip должна быть в пакете binutils или подобном (т.е. это часть системы), поэтому ее не включают в состав компилятора.
Можно еще ключ -Xg попробовать, если он там вообще есть (я пользуюсь 2.3.1, поэтому не знаю, есть ли он в 2.2.4). Он должен писать отладочную информацию в отдельный файл, про который потом можно забыть...
Можно еще ключ -Xg попробовать, если он там вообще есть (я пользуюсь 2.3.1, поэтому не знаю, есть ли он в 2.2.4). Он должен писать отладочную информацию в отдельный файл, про который потом можно забыть...
вопрос для расширения кругозора:
- какие модули компилятора нужно читать/смотреть/изучать, чтобы написать свой кодогенератор?
(например, под платформы dalvick-vm или cell-be)
- какие модули компилятора нужно читать/смотреть/изучать, чтобы написать свой writer?
(для производства исполняемых mach-o файлов под Intel Mac, без участия gnu tools)
полистав статьи от сюда: http://wiki.lazarus.freepascal.org/FPC_internals, лего можно понять, что вся актуальная информация всё-равно находится в сорцах. а может у Macro ещё толковые книжки/статейки есть?
знаю, что вопрос лучше адресовать #fpc-dev, но хочется знать мнение российских разработчиков компилятора
- какие модули компилятора нужно читать/смотреть/изучать, чтобы написать свой кодогенератор?
(например, под платформы dalvick-vm или cell-be)
- какие модули компилятора нужно читать/смотреть/изучать, чтобы написать свой writer?
(для производства исполняемых mach-o файлов под Intel Mac, без участия gnu tools)
полистав статьи от сюда: http://wiki.lazarus.freepascal.org/FPC_internals, лего можно понять, что вся актуальная информация всё-равно находится в сорцах. а может у Macro ещё толковые книжки/статейки есть?
знаю, что вопрос лучше адресовать #fpc-dev, но хочется знать мнение российских разработчиков компилятора
Теперь осталось найти куда включена binutils
В 2.3.1 такой проблемы нет? Русские буквы всё также глючат? И где он плохо лежит чтобы скачать, желательно и исходники и пакет для устанвки в каталог пользователя.
В 2.3.1 такой проблемы нет? Русские буквы всё также глючат? И где он плохо лежит чтобы скачать, желательно и исходники и пакет для устанвки в каталог пользователя.
Сквозняк
binutils находится на Вашем установочном диске с операционной системой. Если Вы не устанавливали GCC, то binutils автоматически тоже не установился (ему просто незачем). Думаю алгоритм ясен
- вставляете диск с ОС в привод, находите там файл binutils*.rpm (если у Вас rpm-овская система) и устанавливаете...
binutils находится на Вашем установочном диске с операционной системой. Если Вы не устанавливали GCC, то binutils автоматически тоже не установился (ему просто незачем). Думаю алгоритм ясен
