2014-10-11 51 views
0

我正嘗試在運行不帶root的Linux的羣集上安裝軟件。但是,該軟件在安裝之前需要一些非標準庫。我在我的主目錄中安裝了所需的庫。當我使用./configure編譯軟件的源代碼時,我收到一條錯誤消息,說它無法找到庫文件。 我試着使用CPPFLAGS,LDFLAGS和LD_LIBRARY_PATH來告訴編譯器在哪裏可以找到庫,但它似乎沒有工作。將庫安裝在非標準位置並使用它們來安裝軟件

如何在沒有管理權限的情況下安裝非標準庫並告訴編譯器在哪裏找到該庫?我是否也應該爲其他圖書館也做同樣的事情?

+0

你在用什麼發行版? – Gutblender 2014-10-11 00:33:58

+0

紅帽企業Linux服務器版本5.5(Tikanga) – andy 2014-10-12 00:43:08

回答

0

恐怕完全取決於軟件的實際腳本和/或Makefile和/或代碼的確切過程。沒有普遍的答案可以與現有的每個軟件包一起使用。每個人的配置腳本都是獨一無二的。

它也取決於某些部分,如何將庫安裝在非標準位置。很多時候,庫軟件包會包含使用庫的應用程序必須使用的幾種配置機制之一,以便將其自身配置到庫中;其中一部分包含必要的mojo鏈接軟件應用程序將正確的RPATH放入軟件應用程序的可執行文件,以便它可以從正確的位置加載庫;這通常涉及您提到的變量。你沒有提到的一件事是指定-R標誌來設置可執行文件中的RPATH。

所以,這裏唯一的答案是讓你繼續深入研究庫和應用程序的配置腳本,並試圖找出答案。除了暴力外,沒有別的辦法可以做到這一點。在很多情況下,您無法做到「開箱即用」,並且需要修補一個或另一個的配置腳本,以便發生「正確的事情」。

0

PKG_CONFIG_PATH同時建設,對以前安裝的庫鏈接二進制文件:

export PKG_CONFIG_PATH="/home/user/dir/install/lib/pkgconfig:$PKG_CONFIG_PATH" 

當執行根據這些庫編譯的二進制文件,設置LD_LIBRARY_PATH

export LD_LIBRARY_PATH="/home/user/dir/install/lib:$LD_LIBRARY_PATH" 

如果執行安裝在非標準位置的二進制文件,同樣設置爲PATH

export PATH="/home/user/dir/install/sbin:/home/user/dir/install/bin:$PATH" 

您可能需要將.bashrc中的最後兩個設置爲將來使用。

如果兩個地方都存在文件,則將以前的變量設置放在字符串末尾會給予非標準庫和二進制位置更高的優先級。如果您更喜歡使用通過包管理器安裝的程序,請考慮切換它們。

相關問題