我刚刚建立了一个共享库,但是当我使用纳米命令查找依赖输出如下纳米输出不正确
$ nm -a libgio-2.0.so.0.2701.0 | grep ZLIB
U [email protected]@ZLIB_1.2.2
U [email protected]@ZLIB_1.2.2
我不知道均值的@@ZLIB_1.2.2
,实际上建筑libgio的命令是
gcc -o libgio-2.0.so.0.2701.0 libfoo.so libbar.so libz.so.1.2.8
其中libz.so.1.2.8
从我自己的源建成并投入libgio-2.0.so.0.2701.0的同一目录下。这不是同一版本系统的libz进行(/usr/lib/libz.so)
所以,我的问题是,为什么@@zlib
的nm
输出1.2.2
,不1.2.8
? nm输出的@@ZLIB_1.2.2
的平均值是多少?
感谢
您可能会澄清,开发人员在构建库时选择'ZLIB',并且它不一定是库的*名称*。 –
感谢乔纳森和托马斯的详细评论。所以@@版本不是实际的链接库的版本,而是符号的版本。在我的情况下,该程序仍然链接zib 1.2.8,而不是1.2.2,这是正确的吗? –
该程序将链接到任何链接它(以及运行时加载程序在运行时发现的内容)。使用'nm'不能告诉你程序链接到哪个库,它只能显示你缺少的符号。 'deflateSetHeader @@ ZLIB_1.2.2'只是一个符号的名字(装饰着一些额外的信息,使它不同于'deflateSetHeader @@ ZLIB_0.1.1')。要查看程序链接的库,请使用'ldd'而不是'nm'。 –