Основы компиляции бинарных файлов без зависимостей с использованием gnu toolchain - PullRequest
4 голосов
/ 11 января 2012

Я пытаюсь замедлить создание аудиофайла, используя SoX , и хотя я могу легко скомпилировать исходные файлы на компьютере с Linux, который я использую регулярно, мне нужно перенести двоичный файл в другой Linux машина с ограниченными разрешениями и памятью. Я попытался скопировать двоичный файл из папки usr / local / bin на моем компьютере на другой, и он не смог найти ссылки на функции.

Существует ли стандартный способ компиляции двоичных файлов без зависимостей, и если нет, то как настроить двоичный файл SoX так, чтобы он видел правильные зависимости, когда у меня есть только права на запись во временную папку?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Вы можете скомпилировать, добавив флаг -static к опциям компиляции в Makefile.Но имейте в виду любые различия в glibc версиях между двумя (или более) рабочими станциями Linux.Вы хотите убедиться, что вы скомпилировали (или хотите использовать) рабочую станцию ​​с более старым (или самым старым) ядром, или ваш двоичный файл может не работать из-за зависимостей от более нового ядра, которые не могут быть выполнены старой установкой Linux.Итак: в основном, компилируйте на своей самой старой машине для лучших результатов.

2 голосов
/ 11 января 2012

Самое важное, что вам нужно для создания исполняемых файлов без зависимостей, - это статическая версия всех библиотек, которые этот исполняемый файл будет использовать. Обычно библиотеки также являются общими, то есть, если им нужно вызывать функции другой библиотеки, они используют общие ссылки. Чтобы не получить зависимости 2-го класса, вам необходимо статически скомпилировать все необходимые библиотеки.

...