2009-09-23 55 views
5

據我所知,安裝在Linux/UNIX上的C++命令行程序時,這是習慣,而不是把它留在它原來的目錄,將其移動到一個目錄已經是路徑上,所以我有一個make install的條目:的Linux/UNIX安裝數據文件

mv ayane /usr/local/bin 

看起來有點遠一點,我要與目錄或兩個完整的配置,數據和腳本文件,該程序需要讀取,在一些落得啓動,稍後根據需求啓動,並在某些情況下隨後進行修改並再次保存。

這會導致程序如何知道數據文件的位置。在我的Ubuntu Linux虛擬機中查看/ bin,它似乎辜負它的名字,只包含二進制文件,所以數據文件通常不會與程序放在同一目錄中。

什麼是用於將數據文件可以知道該程序的位置,通常的解決辦法?

+0

相關:http://stackoverflow.com/questions/528399/what-should-linux-unix-make-install-consist-of – dmckee 2009-09-23 18:13:14

回答

7

有一些文件系統標準,閱讀了上FHS或類似的東西(注意,是文件系統佈局不同的方法)。

基本上,你把你的可執行的二進制文件到$prefix/bin/,每個主機配置進入$prefix/etc/,每個用戶到用戶的主目錄,拱無關的靜態數據爲$prefix/share,拱相關的數據和庫到$prefix/lib和可變數據通常會進入/var/lib/

最好是在編譯時和運行時都可以配置這個東西。也習慣於不手動編寫Makefilesinstall目標,你可能想看看autotools套件或類似的(品味)。

+2

將數據放入$ prefix/share/和$ prefix是更有意義的/ lib/。如果有一個以上的配置文件:在/ etc/ PiedPiper 2009-09-24 11:41:21

+2

PiedPiper,沒事的時候,我指的是'$前綴/ lib'和'$前綴/ share'我沒有暗示文件應該一定是說的直接後裔目錄。 – 2009-09-24 12:12:05

2

你應該看看File System Hierarchy標準。

簡單地說,如果你計劃需要全系統文件,那麼配置應該在/etc。資源(如腳本和圖像文件)位於/usr/share。運行數據進入/var/run

當然,每個用戶文件都位於用戶的主目錄中。

相關問題