Автор: -=CHE@TER=- May 29 2007, 07:35
Наверное, все уже ей пользуются, но всё-же...
Есть такая программа от автора знаменитого InnoSetup: http://www.jrsoftware.org/striprlc.php.
Она убирает из .EXE файла relocation секцию (".reloc"), тем самым уменьшает его размер.
Для программ на Delphi очень архиважная и полезная вещь - уменьшить размер готового .EXE'шника (полезно сделать перед упаковкой UPX'ом).
Подробнее читайте по приведённой выше ссылке на странице программы.
Программа на Delphi 7:
CODE
Begin
End.
.EXE занимает - 13824 байта.
После того, как по ней StripReloc проехался - 12800
Итого: чистый 1 Кб "довеска".
Естественно, что чем больше программа, тем и "довесок" будет больше.
Я использую так:
StripReloc.exe /B /C filename.exe
Автор: Xplorer Jun 4 2007, 16:42
QUOTE(-=CHE@TER=- @ May 29 2007, 11:35 AM)
Она убирает из .EXE файла relocation секцию (".reloc"), тем самым уменьшает его размер.
Для программ на Delphi очень архиважная и полезная вещь - уменьшить размер готового .EXE'шника (полезно сделать перед упаковкой UPX'ом).
UPX по умолчанию для PE EXE-файлов сам удаляет релоки.
Автор: -=CHE@TER=- Jun 4 2007, 20:55
QUOTE(Xplorer @ Jun 4 2007, 04:42 PM)
UPX по умолчанию для PE EXE-файлов сам удаляет релоки.
Хех, не тут-то было.
Такая программа на Delphi 7:
CODE
Begin
End.
Компилируем. Получаем .EXE файл размером 13824 байт.
1) Натравливаем на него StripReloc и пакуем/распаковываем при помощи UPX 3.00.
file.exe (13824)
StripReloc.exe /B /C file.exe (
12800)
upx -9 file.exe (8704)
upx -d file.exe (
12800)
Получаем те же 12800 байт.
2) Поступаем по другому - не натравливаем на него StripReloc, а сразу жмём:
file.exe (13824)
upx -9 file.exe (8704)
upx -d file.exe (
13824)
Т.е. Reloc'и то он стрипает (скорее, зануляет), но вот размер остаётся тем же. Будет ли размер такой же или выростет на больших файлах - не знаю (сдаётся мне он вообще в упакованный файл ничего об Reloc не пишет) и ещё вопрос - будет ли он больше в оперативной памяти занимать или нет? И всё-же при распакованном файле разница чувствуется (*улыбается*).