我正在尝试编译libpng
,这需要libz
。我已在我家安装了我的所有者libz.so.1
并设置了LD_LIBRARY_PATH
。但由于ldd
的输出显示它仍然使用/usr/local/lib/libz.so.1
,因此无法得到任何结果。
然后make的输出显示为“-L / home / zlib -lz”。为什么呢?
答案 0 :(得分:4)
您可能需要从/home/mylibs/libz.so
到/home/mylibs/libz.so.1
的符号链接。
请注意,-lz
会搜索libz.so
,但不会搜索libz.so.1
,因此链接器会继续搜索,并会在/usr/local/lib
中找到这样的链接。
除此之外,您还希望在可执行文件的标题中显示NEEDED条目(记录动态依赖项),并使用:
$ objdump -x a.out | grep NEEDED
查看是否使用完整路径录制,libz.so
或libz.so.1
。