关于在c ++中使用外部库的困惑

时间:2014-04-01 22:44:42

标签: c++ boost eigen

在c / c ++中,我们使用-I指定头文件位置,使用-L路径指定库路径。我有一个eigen和boost库,所以我做的是我将这些库复制到linux中的/ usr / include目录和我程序的源文件中我只使用了这些库的头文件。我的问题是这些库的源文件是如何与我的程序源文件链接的,我只使用这些库的头文件?

2 个答案:

答案 0 :(得分:2)

这取决于您使用的库。 Eigen3只是标题:不需要链接它。有了Boost,它取决于。大多数部分只是标题,但可能需要链接一些库。

复制到/usr/include。这听起来非常错误。使用您的发行版的软件包管理器获取所需库的软件包。您几乎不应该直接将文件放入/usr/{include|lib...},而是更喜欢/usr/local/{include|lib...}

答案 1 :(得分:1)

您对源代码和目标代码也有点困惑。通常,库将包含编译的,对象,代码,但C ++模板扩展需要某种源代码或类似源代码才能执行模板实例化。

但是,底线是包含库的语法取决于您使用的编译器/链接器组合。在有人完全回答这个问题之前,你需要说明这一点。

目录" / usr / include"被认为是特殊的,是您正在使用的操作系统或平台的一部分,因此您不应将文件复制到其中。

请注意构造" c / c ++"不是很有意义 - 两种语言C和C ++有不同的语法和不同的链接模型。最好说出你的意思。