Створення статичного бінарного


14

Я встановив додаток [наприклад, fdisk]. Але це вимагало бібліотек для виконання. Я шукаю утиліту / інструмент, який допоможе мені створити статичний бінарний файл із уже встановлених бінарних файлів. Так що я можу використовувати його де завгодно.

Єдиний надійний інструмент , який я знайшов це ErmineLightз тут , але це одна частка посуд.

Чи є якесь програмне забезпечення з відкритим кодом для того ж?

EDIT fdisk - лише приклад. Я більшу частину часу працюю над LFS, тому якщо мені доведеться користуватися будь-якою утилітою, мені потрібно виконати наступні кроки

  1. Завантажте джерело
  2. налаштувати
  3. зробити
  4. зробити тест
  5. зробити встановлення,

Тож просто заощаджую час, я шукаю рішення, в якому я зроблю статичний бінарний файл з debian або Fedora чи з іншого дистрибуції, спробуйте його на LFS, і якщо він працює добре або відповідно до моєї вимоги, я буду перейдіть з вихідним кодом на компіляцію.


1
це мета просто легкість передачі (тобто поставити її на usb, перенести куди завгодно з цією аркою процесора)?
Майк Пеннінгтон

Відповіді:


15

Якщо fdisk - лише приклад, і ваша мета справді - зробити статичні виконувані файли з динамічних виконуваних файлів, спробуйте встановити Elf . Існує навіть порівняння з Ermine (від продавця Ermine, так що застереження (не) emptor) . Зауважте, що

  • Якщо у вас багато виконуваних файлів, їх комбінований розмір, ймовірно, буде більше, ніж комбінований розмір динамічно пов'язаних виконуваних файлів плюс необхідні динамічні бібліотеки.
  • Є особливості GNU libc, які можуть не працювати в статично пов'язаних виконуваних файлах, таких як NSS (бази даних імен користувачів, імена хостів тощо) та функції, пов’язані з локальною локальністю.

Якщо ваша мета - мати невеликий портативний набір системних інструментів, ви шукаєте BusyBox , набір основних інструментів, призначених для вбудованих систем (у тому числі fdisk). Ви також можете бути зацікавлені в меншому , ніж стандартна бібліотека Glibc, наприклад dietlibc або μClibc .


1
Я спробував Ельфійський стабілізатор, але на мій подив. Це не спрацювало. Це segfault. Я багато разів пробував багато дистрибуцій із багатьма утилітами.
SHW

1
Це, ймовірно, segfaults для рандомізації адреси: це пояснено тут: linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
Rmano

0

Ну ... це виглядає як дуже погана ідея. Але, це можливо.

Оскільки fdisk є відкритим кодом, просто схопіть його джерело та подивіться на Makefile. Ви повинні знайти варіант, який передасть "-static" gcc при компіляції.

Я не гуру С / С ++, але, наскільки я знаю, створення статично пов'язаних бінарних файлів із існуючого динамічно пов'язаного бінарного файлу неможливо.

Якщо ви хочете використовувати його в будь-якому місці, я рекомендую використовувати невеликий розподіл технічного обслуговування, який починається протягом декількох секунд, і дозволяю вам все змінити.

Для мене це робить більше сенсу, тому що ви, ймовірно, захочете змінити диск, на якому встановлена ​​ваша Linux / UNIX установка.


Ваша відповідь здається суперечливою, ви сказали "... дуже погана ідея. Але це можливо", а потім також "... створення статично пов'язаного бінарного файлу з існуючого динамічно пов'язаного бінарного файлу неможливо". Проясніть, будь ласка, свою відповідь, це було б найбільш корисно.
Дж. М. Бекер

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

-3

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


посилання не працює.
Jakuje

Посилання для мене працює і, здається, відповідає безпосередньо на питання. Я б припустив, що це не спам.
roaima

Посилання працює для мене. На сторінці є кількість помилок друку / граматичних / редакторських помилок, яких ви можете очікувати від роботи професійного програміста - більше, ніж ви очікували від професійного веб-сайту, менше, ніж ви очікували від фішинг-електронного листа. Приблизно так само, як і вищезгаданий пост, придумайте його. Здається підозрілим, що цей абсолютно новий користувач приєднається до Stack Exchange саме вчасно, щоб опублікувати посилання на те, що видається абсолютно новим веб-сайтом.
G-Man каже: "Відновіть Моніку"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.