2014-04-01 63 views
0

在c/C++中,我們使用-I指定頭文件位置和-L路徑來指定庫路徑。我有一個特徵庫和增強庫,所以我做的是我將這些庫複製到/ usr/include目錄在linux和我的程序的源文件中,我只是使用這些庫的頭文件。我的問題是這些庫的源文件如何與我的程序源文件鏈接,我只使用這些庫的頭文件?關於在C++中使用外部庫的困惑

+2

取決於您使用的內容......如果您只使用這些庫中的模板,例如頭文件通常包含所有內容,則可能不需要鏈接。 – Macmade

+0

得到它感謝夥計:) – user2481909

回答

1

您對源代碼和目標代碼也有點困惑。通常,庫將包含編譯的對象代碼,但是C++模板擴展需要某種類型的源代碼或源代碼來執行模板實例化。

但是,底線是包含庫的語法取決於您使用的編譯器/鏈接器組合。你需要說明在有人可以完全回答這個問題之前。

目錄「/ usr/include」被認爲是特殊的,是您正在使用的操作系統或平臺的一部分,因此您不應該將文件複製到其中。

請注意,構造「c/C++」不是很有意義 - 兩種語言C和C++具有不同的語法和不同的鏈接模型。最好說出你的意思。

2

這取決於您使用的庫。 Eigen3只是標題:不需要鏈接。隨着升壓,這取決於。大多數部分只有標題,但有些庫可能需要鏈接。

關於複製到/usr/include。這聽起來很可怕。使用發行版的軟件包管理器來獲取您需要的一系列庫。您幾乎不應將自己的文件直接放入/usr/{include|lib...},而更喜歡/usr/local/{include|lib...}