Минимальная установка Busybox / Linux – не будет работать C

Я пытаюсь сделать так, чтобы создать очень минимальный пользовательский дистрибутив Busybox / Linux, задача, которая, по общему признанию, выше моей головы, но я подумал, что я бы это сделал. Моя проблема в том, что всякий раз, когда я пытаюсь запустить программу C, которая не является Busybox или служебной программой Busybox, ash жалуется и сообщает мне, что файл не найден. Я установил раздел из моей системы Arch, установил GNU binutils и uClibc; нет кубиков. Я также написал простейшую программу на C, о которой я мог думать без каких-либо зависимостей от каких-либо библиотек:

int main(int argc, char *argv[]) { return 0; } 

Я скомпилировал, запустил Arch, все еще дал мне «файл не найден» в моей системе Busybox, хотя он отображается при запуске ls. Чтобы ответить на очевидное, да, я запустил его из того же каталога, что и программа, и набрал ./ перед именем файла.

2 Solutions collect form web for “Минимальная установка Busybox / Linux – не будет работать C”

Я предполагаю, что у вас нет правильного динамического компоновщика в системе Busybox.

В вашей системе Arch выполните следующее: ldd ./simplestprogram

Я полагаю, что ldd даст вам результат, похожий на это:

 linux-vdso.so.1 => (0x00007fff9b34f000) libc.so.6 => /lib64/libc.so.6 (0x0000003b19e00000 /lib64/ld-linux-x86-64.so.2 (0x0000003b19a00000) 

Эта последняя строка, /lib64/ld-linux-x86-64.so.2 является динамическим компоновщиком. Готов поспорить, что нет в вашей системе Busybox.

Я собрал программу «hello, world» на моем ноутбуке Arch, использовал vim в двоичном режиме, чтобы изменить /lib64/ld-linux-x86-64.so.2 на /lib65/ld-linux-x86-64.so.2 , сохранил его и попытался выполнить его. Я получил то же сообщение «файл не найден».

У вас даже не может быть файла libc.so в вашей системе Busybox. Возможно, что копирование libc.so и динамических компоновщиков из Arch в системы Busybox (сохранение каталогов!) Может работать, но это может и не так. Я просто не уверен.

Одна вещь, которую нужно попробовать: установить musl на вашу машину Arch. Скомпилируйте свою простую программу с помощью musl-gcc -static -o simple simple.c , переместите этот исполняемый файл, который не имеет ничего динамически связанного, и попробуйте его в системе Busybox.

Вам нужно создать или установить программную цепочку uClibc и скомпилировать / связать свои программы с этим. Вы не компилируете их со стандартным gcc / make / ….

Мне действительно нужно создать инструментальную цепочку uClibc?

  • Как Node.js / модуль кластера передает новые соединения из процесса master / parent, дочерних процессов?
  • Как разрешить обратные пространства в небуферизованном / неканоническом режиме?
  • Установка MySQL в CentOS без разрешения
  • Как создать 32-битную систему chroot, которая является зеркалом моей текущей системы для целей компиляции?
  • Распространение приложения с .so-файлами?
  • Как выбрать время чтения и записи?
  • развернуть программу c ++ с поддержкой c ++ 11 на старой машине CentOS
  • закрытие дескрипторов нежелательных файлов
  • Как создать GUI (например, menuconfig) с помощью lxdialog
  • Как найти файл заголовка, где определена функция ac?
  • Макет памяти динамической загруженной / связанной библиотеки
  • Interesting Posts

    Тайм-аут соединения SSH через пару секунд, когда мой второй интерфейс закрыт

    Использование ресурсов с использованием строки pipe и здесь

    Как я могу использовать подстановочные знаки с ls для поиска файлов, которые отсутствуют в числовой последовательности?

    Какие плохие вещи могут произойти, если я отключу APIC (не путать с ACPI)?

    CentOS не показывает приглашение входа в систему после удаления Gnome Desktop (не переключается автоматически на виртуальный терминал)

    Что это за магия? aptitude search "? обеспечивает (java-runtime)"

    решение shellshock для nexenta / solaris

    Как устранить неисправность отключения туннелей ssh?

    Regex: соответствие 2-го и 3-го символов

    Процесс Rogue Java останавливает мой компьютер

    задание cron для запуска в четверг перед вторым понедельником в месяц

    Создание двоичного файла определенной длины

    Как я могу восстановить файлы конфигурации «/ etc /» по умолчанию?

    TLB кэширование, когда страница выгружается

    Проблема при запуске команды «newgrp» в скрипте

    Linux и Unix - лучшая ОС в мире.