我想弄清楚安裝C和C++代碼的簡化方法 以及由它們構建的庫,主要用於Linux。我想認爲 GNU Autotools,CMake等對於我正在嘗試做的事情來說是過分的。從Linux上簡單安裝源代碼
一個例子:我寫了一些代碼,當'make'運行時,建立到 創建一個庫'example.a'。 (我將使用靜態鏈接到目前爲止 共享庫將引入更多的問題;在我走之前我會抓取它。)使用這些函數需要包括'example1.h','example2.h'等。
使用Autotools,可以運行'make install'或'sudo make install'至 將example.a複製到/ usr/local/lib,並將包含文件複製到/ usr/local/include。 如果構建了可執行文件,則會將其複製到/ usr/local/bin。
我嘗試添加以下行到我的生成文件:
安裝:
CP example.a在/ usr/local/lib目錄
CP example1.h在/ usr /本地/包括
CP例題.h/usr/local/include
cp示例/ usr/local/bin
這似乎很有效,主要是。其他項目則可以「看」 .h文件並正確構建。但.a文件未找到;唯一可以鏈接的 的方法是明確指定路徑爲 /usr/local/lib/example.a。 (儘管gcc堅持認爲它在那條路徑上尋找庫 )。所以:
問題1:我的用戶構建的庫應該放在/ usr/local/lib中嗎?還是我 我使用錯誤的目錄?
現在,我的下一個問題是:這必須用'sudo make install'來完成。 我在考慮對於這個類似的項目,其中只有一個用戶將 利用有問題的代碼,庫應該去 ,如$ HOME/lib,包括文件到$ HOME/include,可執行文件到 $ HOME/bin。
問題2:是否有一種「標準」方式爲當前用戶安裝 包括/庫,而不是爲所有用戶安裝? (從而避免 根使用的需要,我認爲這將是一個「乾淨」的系統,如果只使用 該程序的用戶不得不處理這些文件。)
謝謝。沒有聽說過「安裝」,但「安裝人員」讓我加快速度。重命名爲'libexample.a'沒有幫助;我會繼續調查。你對每個用戶設置的建議似乎是合理的,儘管我覺得奇怪的是沒有一個更「標準」的方法來做到這一點......當然,我不是第一個遇到這種情況? –
/usr/local/lib適合我。我添加了一個例子。 – PSkocik
啊,我看到我瘋狂的地方(和'man ld',看着-l選項證實了這一點):該文件必須命名爲'libfoo.a'。然後可以使用'-lfoo',ld將在前面加上lib,後面加上.a。 _或者你可以使用'-l:libfoo.a',它會直接處理它。再次感謝;這是相當莫名其妙的... –