2010-11-08 125 views
12

我有RHEL 5.2,安裝了Boost 1.33。 我下載了boost_1_44_0.tar.bz2。並建立它。在完成這表明:如何爲新安裝的Boost添加編譯器包含路徑和鏈接器庫路徑?

The Boost C++ Libraries were successfully built! 

The following directory should be added to compiler include paths: 

    /home/dfe/Archive/boost_1_44_0 

The following directory should be added to linker library paths: 

    /home/dfe/Archive/boost_1_44_0/stage/lib 
  1. 如何添加提到包括路徑上面?
  2. 當我做「rpm -q boost」時,它會顯示boost-1.33.1-10.el5。爲什麼這樣,當我安裝版本1.44?
  3. 有沒有更好的方法來安裝最新版本的Boost?

回答

10

首先,我刪除了使用

rpm -e boost-1.33.1-10.el5 

現有的升壓轉一條消息顯示「錯誤:」提升「指定多個包」

然後嘗試:

rpm -e --allmatches boost 

(我不記得我是否鍵入「升壓」或「提高-1.33.1-10.el5」)被證明

與依賴的包。 我所做的:

rpm -e [packagename1] 
rpm -e [packagename2] 

等,然後做:

rpm -e --allmatches 

這抹去我的系統完全提升。

然後我提取boost_1_44_0.tar.bz2使用tar -xvjf boost_1_44_0.tar.bz2與跑引導:

./bootstrap.sh 

然後跑的bjam爲:

./bjam install 

這就是它! Boost被安裝在我的系統上,並且在編譯程序時我不必指定任何鏈接器選項!好極了! 現在'rpm -q boost'命令顯示沒有安裝軟件包。

+3

這裏的關鍵是安裝./bjam,因爲這些說明使得它看起來像./b2是用來安裝的命令。 – 2014-03-16 14:37:05

+0

關於使用'./b2'和'./bjam':http://www.boost.org/build/doc/html/bbv2/faq/names.html – digawp 2015-11-16 08:34:47

8

你必須包括這些目錄的makefile進入其中,你會用它來構建應用程序

CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp 

-I選項將dir在其中搜索#include文件的目錄列表。

-L選項將dir的目錄列表中搜索庫通過連接

CC是Sun的編譯器...

+1

耶!它的工作!謝謝!雖然我的目的是讓老版的Boost被完全取代新版本,現在/ usr/include/boost /中的文件似乎已經更新了,但是仍然連接到/ home/dfe/Archive/boost_1_44_0我使用的每個程序中的文件夾。我可以做什麼來使1_44_0成爲默認版本? – Nav 2010-11-08 12:27:38

7

只是路徑添加到您的.bashrc或.profile文件(或任何你的船浮筒)是這樣的:

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib" 
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0" 
+0

不知道爲什麼這是downvoted ...可以有人解釋這個答案有什麼問題? – isomorphismes 2014-10-21 22:15:06

9

一個可能的原因是,你只是「做」而不是「讓安裝」。 所以你應該運行「sudo ./b2 install」不是「。/ B2"

也總有步驟安裝軟件在Linux系統 1.configure‘檢查’ 2.make‘在當前目錄下建立軟件’ 3.make安裝「文件拷貝到系統,使其他軟件可以使用這個軟件」

的問題是,你已經做了兩步,最後一步沒有做

+0

這對我的Debian8很有幫助。 – amirteymuri 2017-02-24 21:06:01