在我的Linux Mint中,我有一个程序,一个可执行文件。 使用ldd in terminal我可以接受这个可执行文件的dependensies。 ldd文件 当在另一个系统中移动程序时,它不会运行。
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 :(得分:1)
ldd的输出表明您已经在系统上安装了所有库依赖项。
它不能在另一个系统上运行的原因很可能是由于这些库的链接表不同,所以你的程序根本无法找到它所寻找的符号。
作为一个简单的解决方案,我建议在新机器上重新编译程序。