使用-ldl和-l链接库之间的区别

时间:2012-03-29 19:39:59

标签: compilation

我正在尝试在我的程序中链接一些VTK库...而且它不像这样工作 -ldl /usr/lib/libvtkIO.so,这是CMake的方式。但是,如果我使用-L -lvtkIO手动编译它,它的工作原理。有什么区别?

是动态与静态链接吗?

由于

1 个答案:

答案 0 :(得分:0)

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

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