2013-12-17 41 views
2

我打算在Linux下用C和C++製作幾個項目。在一些項目中,我需要額外的庫。如我錯了請糾正我。我打算將庫存儲在/usr/local/include中。但是,將所有庫放在一個目錄中是好的做法嗎?也許最好在/usr/local/include目錄下創建庫名稱子目錄?也許最好將頭文件和源文件存儲在不同的目錄中?最佳做法是必要的。存儲庫的路徑。最佳做法需要

如何處理未編譯的庫,例如MiniInihttps://code.google.com/p/minini/。它帶有頭文件和C文件。我應該編譯它,並將/lib目錄和標題放置到/include。或者,最好將所有內容放在/ include中?

回答

2

如果你談論庫,我假設你的意思是編譯庫(.so文件或.a文件)。這些應該進入/usr/local/lib/。頭應該進入/usr/local/include。源文件.cpp通常不應該安裝在任何地方。有時需要安裝它們,因此可以根據需要重建(dkms可以想到)。然後來源應該進入/usr/local/src/project_name/

我個人更喜歡將標題和庫安裝在/usr/local/include/usr/local/lib的子目錄中,但不是每個人都會同意的。

/usr/local前綴始終應該是可配置的。雖然傳統的make install應該將其用作默認設置,但發行版上的打包者一定會將其更改爲直接安裝到/usr中。

+0

如何處理未編譯的庫,例如'MiniIni' https://code.google.com/p/minini/。它帶有頭文件和C文件。我應該編譯它並放在'/ lib'目錄和頭文件到'/ include'中。或者,最好將所有內容放在/ include中? – vico

+0

@ user1501700這是一個非常特殊的情況,看起來並不像應該安裝它,而是包含在使用它的項目中。你的項目不太可能像這樣結束。 – pmr

1

我希望你沒有在/ usr/local/include中存儲庫文件。它們屬於/ usr/local/lib或可能位於/ usr/local/lib64。

個別項目所需的頭文件不應進入/ usr/local/include,他們應該留在項目中。如果你正在構建一個包含在你的幾個項目中的庫,那麼只需將其放入/ usr/local/lib和/ usr/local/include即可。即使那樣,我也會將標題保留在項目的本地,並且只將它們複製到/ usr/local/include作爲構建過程的一部分。

對於同一個目錄或不同的項目樹,取決於項目的規模。當文件數量(source + include)超過20時,我通常會開始將東西移動到單獨的目錄中。

0

現在談談使用子目錄的問題。將所有庫混合到一個目錄中從來不是一個好的做法。所以更好的方法是創建子目錄,然後使用「相對」路徑引用相應的文件。

0

我建議將所有庫存儲在customlib目錄中。

將LD_LIBRARY_PATH環境變量設置爲該目錄,或者使用-L選項(如果使用gcc(例如minini))。

像這樣你的工作在你的系統中是非侵入性的,並且不會破壞它。

相關問題