Создание статического бинарного файла


14

Я установил приложение [например, fdisk]. Но для этого потребовались библиотеки. Я ищу утилиту / инструмент, который поможет мне создать статический двоичный файл из уже установленных двоичных файлов. Так что я могу использовать его где угодно.

Единственный надежный инструмент , который я нашел это ErmineLightиз здесь , но это одна доля посуда.

Есть ли какое-либо программное обеспечение с открытым исходным кодом доступно для того же?

EDIT fdisk это просто пример. Я большую часть времени работаю над LFS, поэтому, если мне нужно использовать какую-либо утилиту, мне нужно выполнить следующие шаги:

  1. Скачать исходник
  2. настроить
  3. сделать
  4. сделать тест
  5. сделать установку,

Поэтому, чтобы сэкономить время, я ищу решение, в котором я сделаю статический бинарный файл из Debian, Fedora или другого дистрибутива, попробую его на LFS, и если он будет работать нормально или в соответствии с моими требованиями, я буду пойти с исходным кодом для компиляции.


1
является ли целью простота переноса (то есть положить его на USB, нести куда-нибудь с этой аркой процессора)?
Майк Пеннингтон

Ответы:


15

Если fdisk - всего лишь пример, и ваша цель - сделать статические исполняемые файлы из динамических исполняемых файлов, попробуйте Elf statifier . Есть даже сравнение с Ermine (от производителя Ermine, так что будьте осторожны (не) emptor) . Обратите внимание, что

  • Если у вас много исполняемых файлов, их общий размер, вероятно, будет больше, чем объединенный размер динамически связанных исполняемых файлов плюс необходимые динамические библиотеки.
  • Существуют функции GNU libc, которые могут не работать в статически связанных исполняемых файлах, таких как NSS (базы данных имен пользователей, имен хостов и т. Д.) И функции, связанные с локалью.

Если ваша цель - иметь небольшой портативный набор системных инструментов, вам нужен BusyBox , набор основных инструментов, предназначенных для встроенных систем (в том числе fdisk). Вас также может заинтересовать меньшая стандартная библиотека, чем Glibc, например dietlibc или µClibc .


1
Я попробовал эльфийский стабилизатор, но, к моему удивлению. Это не работает. Это segfaults. Я пробовал много раз со многими дистрибутивами со многими утилитами.
SHW

1
Это, вероятно, segfaults для рандомизации адресов: это объясняется здесь: linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
Rmano

0

Ну ... это выглядит как очень плохая идея. Но это возможно.

Поскольку fdisk является открытым исходным кодом, просто возьмите его исходный код и посмотрите на Makefile. Вы должны найти опцию, которая передаст "-static" gcc при компиляции.

Я не гуру C / C ++, но, насколько я знаю, создание статически связанного двоичного файла из существующего динамически связанного двоичного файла невозможно.

Если вы хотите использовать его где-либо, я бы порекомендовал использовать небольшой дистрибутив обслуживания, который запускается через несколько секунд и позволяет вам все изменить.

Это имеет больше смысла для меня, потому что вы, вероятно, захотите изменить диск с вашей установкой Linux / UNIX.


Ваш ответ кажется противоречивым, вы сказали «... очень плохая идея. Но это возможно», а затем также «... создание статически связанного двоичного файла из существующего динамически связанного двоичного файла невозможно». Пожалуйста, уточните свой ответ, это будет очень полезно.
Дж. М. Беккер

@TechZilla: создание статического бинарного файла возможно, но в любом случае это невозможно, если создать существующий из существующего динамически связанного бинарного файла . Однако, посмотрите принятый ответ для некоторых возможных способностей, чтобы сделать последнее. [Примечание: комментарий предназначен больше для будущих читателей, чем для критики всего, что здесь есть.]
Линдс

-3

Вы также можете использовать ELFex Linker , его замечательную программу, которую я только что обнаружил, графический интерфейс и создавать статические исполняемые файлы из динамического исполняемого файла.


ссылка не работает.
Jakuje

Ссылка работает для меня и, кажется, отвечает на вопрос напрямую. Я бы предположил, что это не спам.
Ройма

Ссылка у меня работает. На странице есть количество опечаток / грамматических / редакторских ошибок, которые вы можете ожидать от работы профессионального программиста - больше, чем вы ожидаете от профессионального веб-сайта, меньше, чем вы ожидаете от фишинга. Примерно так же, как вышеупомянутый пост, если подумать. Кажется подозрительным, что этот новый пользователь присоединится к Stack Exchange как раз вовремя, чтобы опубликовать ссылку на новый веб-сайт.
G-Man говорит: «Восстановите Монику»
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.