Linux上安裝Boost C++ Libraries__儲存

來源:互聯網
上載者:User

轉自:http://www.cnblogs.com/cocowool/archive/2011/08/18/2144142.html

假設要安裝的是boost 1.47

$cd path/to/boost_1_47_0

$./bootstrap.sh --prefix=/path/to/installation/prefix

$./b2 install

如果不帶--prefix參數的話(推薦),預設路徑是 /usr/local/include 和 /usr/local/lib

以上操作需要一段時間,可能比較長。完成後,會在 /path/to/installation/prefix 下看到 include 和 lib 兩個子目錄,分別是 boost 安裝後的標頭檔和庫檔案(靜態庫和動態庫)


注意,./bootstrap.sh中使用了--prefix參數,可能導致連結了boost動態庫的可執行程式在運行時,找不到boost動態庫檔案。例如,例如一個可執行檔t,運行時需要依賴libboost_system.so.1.52.0,而libboost_system.so.1.52.0位於/maomao/boost-install/lib 路徑下。執行./t 時提示找不到libboost_system.so.1.52.0:

./t: error while loading shared libraries: libboost_system.so.1.52.0: cannot open shared object file: No such file or directory

執行ldd -d ./t 時,輸出如下:

        linux-vdso.so.1 =>  (0x00007fff7dfff000)
        libboost_system.so.1.52.0 => not found
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)

即,沒有找到libboost_system.so.1.52.0動態庫檔案。一個可行的解決辦法是:在/lib64 下建立一個軟連結

ln -s /maomao/boost-install/lib/libboost_system.so.1.52.0 /lib64/libboost_system.so.1.52.0

再次執行 ldd -d ./t,輸出為:

        linux-vdso.so.1 =>  (0x00007ffff4bff000)
        libboost_system.so.1.52.0 => /lib64/libboost_system.so.1.52.0 (0x00007fe4ad0d7000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003b5bc00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000) 即找到了那個動態庫檔案。


這樣做雖然可行,但如果多個boost動態庫檔案都找不到,就要建多個軟連結。更好的辦法是:

開啟/etc/ld.so.conf加入一行:/maomao/boost-install/lib,即在/etc/ld.so.conf 中加入boost的所有庫檔案的路徑。

然後執行/sbin/ldconfig /etc/ld.so.conf 就可以了。


另外,build過程中可能出現某些boost庫build失敗,有類似下面的error輸出:

boost/python/object_slices.hpp PyObject was not declared in this scope
/libs/iostreams/src/bzip2.cpp:83: error: expected type-specifier before 'bz_stream'

實際上是沒裝相應的開發包,解決辦法就是先安裝這些開發包:

yum install python-devel.x86_64
yum install bzip2-devel.x86_64

然後再執行 ./b2 install

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.