“ldd”报告为“不是动态可执行文件”的文件是否依赖于其他库?
只是确保我做对了 – 我打电话
ldd /path/to/executable
它返回“不是动态可执行文件”。 这意味着它不依赖于其他库,对吗? 如果是这样,是否意味着它可以转移到另一个Ubuntu盒而不用担心依赖?
正确,但有一些事情需要考虑。
从ldd
页:
ldd不适用于a.out共享库。
ldd不适用于在将ldd支持添加到编译器版本之前构建的一些极其旧的a.out程序。 如果在其中一个程序上使用ldd,程序将尝试使用argc = 0运行,结果将无法预测。
@Calmarius是正确的,如果考虑32位exe,甚至没有基本的32位库,就会发生这种情况。
我正在尝试升级我的系统(全新安装的Ubuntu 16.04,从12.04开始),我必须安装一个旧的支持32位服务, avserver
,需要ia32-libs
(不再可用)。 这意味着dpkg
和apt-get
都不满意(无论我做什么,它都会提示我apt-get -f install
,如果我运行它,它坚持我卸载服务包),我的服务将无法启动。
为了certificate这是缺少32位库,我在/sda2
上安装了我的旧系统(Ubuntu 12.04,带有ia32-libs
和32位库)。 确保/opt
(包含我的32位二进制文件)安装在/sda2/opt
,我可以chroot /sda2
和ldd
然后按预期运行。
要解决这个问题,我可以手动安装所有依赖库包:i386(arch)。 然而,我决定而不是试图弄清楚我的依赖是什么,我安装了wine(大多数是32位,因此安装基本库和更多我不需要的负载,但我很好)。
为了修复dpkg
和apt-get
,我编辑了/var/lib/dpkg/status
,找到了我的服务包,并删除了ia32-libs
。 现在dpkg
和apt-get
很高兴
完成后, ldd
愉快地报道: – root@withnail:/opt/