Compilation 将库与-ldl和-l链接的区别

Compilation 将库与-ldl和-l链接的区别,compilation,Compilation,我试图在我的程序中链接一些VTK库…但它不是这样工作的 -ldl/usr/lib/libvtkIO.so,这是CMake的做法。但是如果我使用-L-lvtkIO手动编译它,它就可以工作了。有什么区别 是动态链接还是静态链接 谢谢CMake尝试使用库的完整路径,而不是让链接器搜索库路径。如果在生成的二进制文件上使用ldd,您将看到它们链接到同一个对象(在这两种情况下都是动态链接的)。对于VTK之类的东西,通常最好使用CMake,因为它还可以为您跟踪接口库之类的东西 我认为您误解了链接器的一些参数,

我试图在我的程序中链接一些VTK库…但它不是这样工作的 -ldl/usr/lib/libvtkIO.so,这是CMake的做法。但是如果我使用-L-lvtkIO手动编译它,它就可以工作了。有什么区别

是动态链接还是静态链接


谢谢

CMake尝试使用库的完整路径,而不是让链接器搜索库路径。如果在生成的二进制文件上使用ldd,您将看到它们链接到同一个对象(在这两种情况下都是动态链接的)。对于VTK之类的东西,通常最好使用CMake,因为它还可以为您跟踪接口库之类的东西

我认为您误解了链接器的一些参数,-lvtkIO将链接到库路径中名为libvtkIO.so的库,-ldl将链接到名为libdl.so的库。-L参数用于添加链接器应搜索库的其他路径