Здрасьте.
И это снова я.
Вопрос наверное праздный ибо не такой уж важный. Но все ж интересно.
Итак. Суть. На основном аппарате соят окна ХР, Lazarus 1.4.4 Под этим, собственно и пишу. Готовый экзешник еще жму потом последним UPX.
Однако, время от времени приходится сидеть за другим аппаратом. Там окна 7 - 32-битные. Чтобы времени зря не терять поставил туда тот же дистрибутив Lazarus и перетащил на флэшке исходник. Но вот забавная штука. После всех тех же манипуляций (копиляция, сжатие UPX) получается exe немного, но все ж большего размера (1 275 392 байт против 1 267 200).
При этом перенес те же исходники назад, скомпилил, сжал - размер уменьшился.
Вот и стало интересно, это нормально, что Лазарус одинаковой версии выдает разного размера результат на аппаратах с разной осью.
(Хотя мб это UPX на разных системах жмет с разной степенью).
Хотя 8 кг сегодня не существенно. Но все же интересно.
Странности с размерами exe
Модератор: Модераторы
В исходниках Лазаруса наверняка есть осезависимые куски, в итоге код может быть разным
kotompazb писал(а):это нормально, что Лазарус одинаковой версии выдает разного размера результат на аппаратах с разной осью
strip то к файлу применяли?
А то если в нем отладочная информация, то в ней ссылки на каталог с исходниками. Разные пути - разная длина строк, разный размер упакованного результата. То же касается "информации об исходниках", которая в .exe записана, и runtime-архиваторами, емнип, жмётся.
Алсо, может быть разный размер кластера на файловой системе, и что-то - либо линкер, либо упаковщик, выравнивает по его границам.
SSerge писал(а):strip то к файлу применяли?
Ес-но. Хотя и говорят, что опция "вырезать отладочную информацию..." делает в точности то же, все равно на всякий случай strip.exe применяю. Завел себе батник когда-то и пользую его:
Код: Выделить всё
ECHO OFF
ECHO Начало упаковки %1
ECHO Обработка STRIP.EXE
PAUSE 0
STRIP.EXE --strip-all %1
ECHO Начало упаковки UPX.EXE
PAUSE 0
UPX.EXE -9 %1
ECHO Упаковка завершена
PAUSE 0Ну, в общем, нормальный, я так понял, эффект.
Нормальный-ненормальный хз, я один раз сталкивался с приложением собраным на 7x32 не запускающимся на XPx32 - "точка входа в четотам не найдена гдетотам" подробностей непомню, касалось стандартных dllок. этиже исходники собраные в XP запускались везде, дело было с транковым лазарем (одна и таже ревизия на обоих системах), как сейчас обстоят дела - незнаю.
kotompazb,
я б сказал вам про то, что использование UPX -- зело дурной тон, но вы и без меня, наверное, это знаете.
Есть ли хоть один плюс от upx, перевешивающий минусы от дублирования кода в памяти и необходимости сохранять распакованные секции exe-шника в свопе вместо перечитывания с диска из самих файлов?
я б сказал вам про то, что использование UPX -- зело дурной тон, но вы и без меня, наверное, это знаете.
Есть ли хоть один плюс от upx, перевешивающий минусы от дублирования кода в памяти и необходимости сохранять распакованные секции exe-шника в свопе вместо перечитывания с диска из самих файлов?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
kotompazb писал(а):Хотя и говорят, что опция "вырезать отладочную информацию..." делает в точности то же, все равно на всякий случай strip.exe
Пытался после вырезания, ну и еще кое-каких перенастроек воспользоваться strip.exe... вырезано было целых 0байт.
