[英]Confusion about using external libraries in c++
在c / c ++中,我們使用-I指定頭文件位置,並使用-L path指定庫路徑。 我有一個本征和增強庫,所以我所做的是將這些庫復制到linux中的/ usr / include目錄中,並且在程序的源文件中,我只使用了這些庫的頭文件。 我的問題是這些庫的源文件如何與我僅使用這些庫的頭文件的程序源文件鏈接?
這取決於您使用的庫。 Eigen3是僅標頭的:無需鏈接它。 使用Boost時,要視情況而定。 大多數部分都是僅標頭的,但某些庫可能需要鏈接。
關於復制到/usr/include
。 這聽起來非常錯誤。 使用發行版的軟件包管理器來獲取所需庫的軟件包。 您幾乎永遠都不要將文件直接放入/usr/{include|lib...}
,而應該使用/usr/local/{include|lib...}
。
您對源代碼和目標代碼也有些困惑。 通常,一個庫將包含編譯的,對象,代碼,但是C ++模板擴展需要某種源代碼或類似源代碼的代碼才能執行模板實例化。
但是,最重要的是,包含庫的語法取決於您使用的編譯器/鏈接器組合。 您需要聲明,在有人可以完全回答問題之前。
目錄“ / usr / include”被認為是特殊的目錄,它是您正在使用的操作系統或平台的一部分,因此您不應將文件復制到其中。
注意,“ c / c ++”的構造不是很有意義-兩種語言C和C ++具有不同的語法和不同的鏈接模型。 最好說出您的意思。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.