Как скопировать библиотеки, против которых создается динамично связанная программа?

Недавно, я был в компиляцию программного обеспечения и распределение его. В прошлый раз, когда я сделал это, я сделал так путем создания моей программы и выполнения ldd на нем для получения всех библиотек, против которых это было связано. Я добрался, путь библиотеки (как говорят /lib/x86_64-linux-gnu/libc.so.6) и я скопировал и вставил его от своей системы. Это работало отлично, но вручную копирование и вставка каждой библиотеки казались повторяющимися. Есть ли способ, которым я могу просто получить список путей к одним только библиотекам (безо всего из libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1dc3333000)) таким образом, я могу скопировать их и распределить их с моей сборкой?

0
задан 20 September 2015 в 04:39

2 ответа

В той точке Вы в основном создаете tarball из всего дистрибутива Linux. В зависимости от библиотек Вы связываетесь с, просто включая саму динамическую библиотеку может не быть достаточно (некоторые библиотеки зависят от сменных модулей и других внешних файлов, которые не установлены в тех же местоположениях, как те же версии, через все дистрибутивы Linux).

существует несколько опций иметь дело с этими различиями:

  • Распределяют исходный код Вашей программы и позволяют людям, которые Вы являетесь распределительными к, так, чтобы пользователи моя компиляция это сами, на их предпочтительном распределении.
  • Перекомпилировали версию Вашей программы для каждой различной версии каждого различного распределения Linux, Вы хотите поддерживать, и распределить Вашу программу в пакетах для тех дистрибутивов и версий.
  • Компиляция Ваше приложение при помощи статического подключения, а не динамического подключения. Если Вы связываетесь с библиотеками, которые зависят от внешних модулей или файлов, хотя, это может все еще быть проблематично.
  • Распределяют образ виртуальной машины определенного дистрибутива Linux, который Вы хотите поддерживать, который является минимальной установкой и установил Вашу программу по умолчанию, для обеспечения полной среды для выполнения ее в.
3
ответ дан 1 October 2019 в 01:24

Мне выяснили его (главным образом).

Позволяют нам предположить, что программа, я создал это, я планирую распределить, расположен в/bin/bash. Я мог создать новый каталог и выполнить следующую команду: cp $(ldd /bin/bash) ./

Это даст некоторые сообщения об ошибках, но они могут быть проигнорированы.

0
ответ дан 1 October 2019 в 01:24

Другие вопросы по тегам:

Похожие вопросы: