在我的 Linux Mint 中,我有一个程序,一个可执行文件。 在终端中使用 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 我只能得到我需要的库吗?
谢谢!
最佳答案
ldd 的输出表明您已经在系统上安装了所有库依赖项。
它不能在另一个系统上运行的原因很可能是由于这些库的链接表不同,因此您的程序根本无法通过该地址找到它正在寻找的符号。
作为一个简单的解决方案,我建议在新机器上重新编译程序。
关于linux - 程序和安装库的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058599/