天天看點

Linux程式的安裝路徑

無論Windows還是Linux,安裝軟體實質是複制一些列檔案到磁盤中。這些檔案包括動态和靜态庫(包含二進制内容的檔案)、頭檔案、可執行檔案,以及一些配置檔案等。

除了複制檔案,為了讓其他程式能夠找到這些檔案,都需要設定全局變量(比如path)來供其他程式檢索定位這些檔案的位置。Linux中,添加了預設的庫、程式、頭檔案的搜尋路徑,我們也可以自定義這些搜尋路徑。

安裝程式的實質是複制檔案到磁盤上,是以,到底将檔案複制到哪裡,變得十分關鍵。預設情況,程式的檔案會按照其類型,複制到/usr/local/目錄下。比如,庫檔案會複制到/usr/local/lib;頭檔案會複制到/usr/local/include;一些共享資訊,如程式文檔,會複制到/usr/local/share。在每個類别檔案夾中,程式會集中存放。有時為了防止命名沖突,某個程式的檔案會單獨放在一個檔案夾中。比如程式abc的lib檔案,會放到/usr/local/lib/abc/目錄下。

通常來說不會出現檔案名稱沖突的情況

在使用configure的時候,可能我們權限不足,無法向/usr/local檔案夾中寫入資料;或者為了檔案布局清晰,希望放入/home/username目錄下。此時,我們可以使用參數:–prefix=/home/username/usr/local。該參數等号右邊的值為安裝程式的目标目錄,程式所有的檔案都将放入該檔案夾。

當我們安裝n個程式到同一個目錄下時,相同的檔案夾不會被覆寫。同一類型的檔案會被集中存放。比如下面的例子:

我計劃安裝程式a, b, c三個程式。他們安裝後的具體分布如下:

a: lib, include, lib64, libexec, share

b: lib, include, bin, share

c: lib, include, bin, sbin

此時,三個程式分别将對應檔案安放在/home/username/usr/local目錄下的幾個目錄中:

lib, include, lib64, libexec, share, bin, sbin

程式開發者能夠保證這些程式的檔案不會出現重名。是以,我們安裝程式,隻會不停的append,而不會出現overwrite的情況。如果希望進行更精細的配置,比如,希望程式a的頭檔案放到/home/username/headers中,可以使用 –includedir=/home/username/headers參數來指定。具體可以參見文章:

https://blog.csdn.net/qq_28787211/article/details/78569067

在調用程式的時候,由于安裝目錄是我們自己定義的,是以系統無法知道我們到底把程式放在哪裡。此時有兩種方式:

1,将可執行檔案的路徑添加到全局變量中,這樣Linux就能通過全局變量,搜尋到程式。

2,使用全局路徑,或者轉到程式所在的目錄執行程式。

繼續閱讀