Подтвердить что ты не робот

Как полностью удалить исполняемые файлы

Я бы хотел как можно больше убрать - на Linux: ELF. Я хочу только там, где мне нужно запустить его.

Я попытался использовать strip:

strip --strip-all elf

Но он, похоже, не делает хорошую работу: nm по-прежнему отображает много вещей, а бинарный файл по-прежнему большой.

Что мне делать?

4b9b3361

Ответ 1

Если все остальное не удается, вы можете прочитать документацию, начиная с man strip.

Серьезно, может быть, ваше приложение имеет много символов и кода. С одной стороны наибольшее уменьшение размера было бы rm elf, но тогда ваша программа больше не будет работать. Все зависит от вашей программы и того, что вы закодировали в ней.

В качестве конкретного примера я недавно работал с большой С++-библиотекой, где strip без дополнительных аргументов уменьшал размер от 400 + мб до примерно 28 мб. Но тогда вы больше не могли ссылаться на него (в контексте других разделяемых библиотек), делая его несколько бесполезным.

Но при использовании strip --strip-unneeded он изменил размер с 400+ мб до 55 мб, что по-прежнему значительным, но позволило доступ к библиотеке из других разделяемых библиотек.

Короче говоря, я бы доверял strip. Возможно, ваше приложение не может быть уменьшено без изменений кода.

Ответ 2

Используя параметр -R для разметки, вы можете удалить все разделы, которые вам не нужны. Также смотрите это относительно минимальных исполняемых файлов ELF.

Ответ 3

Я бы просмотрел эту замечательную статью, в которой подробно рассказывается о том, как сделать исполняемый файл ELF как можно меньше. Возможно, у него есть информация, которая может помочь!

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Ответ 4

strip -R .comment
gcc -Os elf.c

Эти два могут помочь.