2016-12-09 3 views
0

В моей Linux Mint у меня есть исполняемый файл. С ldd в терминале я могу получить зависимости этого исполняемого файла. ldd file При перемещении программы в другой системе она не запускается.Зависимости программ и библиотек установки

LDD файл дает что-то вроде ...

linux-vdso.so.1 => (0x00007ffc2a36d000) 
libwx_gtk2u_stc-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk2u_stc-3.0.so.0 (0x00007f2919d55000) 
libwx_gtk2u_adv-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk2u_adv-3.0.so.0 (0x00007f291996f000) 
libwx_gtk2u_core-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0 (0x00007f29190f5000) 
libwx_baseu-3.0.so.0 => /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0 (0x00007f2918c63000) 
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f291898e000) 

...............

Как я могу знать все, что библиотеки и установить только для этого нужно для запуска в другую систему.

Использование objdump -p/path/to/program | grep NEEDED Я могу получить только те библиотеки, которые мне нужны?

Спасибо!

ответ

0

Выход ldd говорит, что у вас есть все зависимости библиотек, установленные в вашей системе.

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

В качестве простого решения я бы рекомендовал перекомпилировать программу на новой машине.

+0

Большое спасибо. Когда я перемещаю программу в другую систему и запускаю многие библиотеки, она запускается. Но эта ОС находится в витруальной машине. Когда программа должна послать на рассылку, она должна работать. Как я должен знать, что я сделал раньше в ОС, если я не отслеживал историю? Там должен быть способ узнать, что whitch libs должен установить в ОС для запуска этой программы. –

+0

Вы можете проверить необходимые библиотеки с помощью ldd, как вы это делали выше. Извините, я не понял другого вопроса. –

+0

Также не могли бы вы прояснить, «программа не работает»? Это может быть связано с разной причиной. –