Boost 是 C++ 準標準庫的重要補充,提供了智能指針、正則表達式、多線程、文件系統等眾多高質量組件。在 Ubuntu 12.04 等舊版本系統上配置 Boost 1.52.0,主要有兩條路徑:一鍵安裝預編譯包(快速便捷)與源碼編譯安裝(版本可控、優化深度)。本文詳細記錄兩種方法的完整步驟、驗證代碼與常見坑點。
boost::lexical_cast 進行字符串轉整數apt-cache search boost
輸出列表中會出現 libboost-dev,這是開發包(含頭文件與靜態庫)。
sudo apt-get install libboost-dev
優點:極快(秒級),自動處理依賴,系統級整合。
缺點:版本由倉庫決定,可能非最新;無法自定義編譯選項(如多線程、位置無關碼等)。
編寫測試程式 test.cpp:
#include <iostream>
#include <boost/lexical_cast.hpp>
int main() {
int a = boost::lexical_cast<int>("123456");
std::cout << a << std::endl;
return 0;
}
編譯運行:
g++ test.cpp -o test
./test
輸出 123456 即代表安裝成功。
官網 Boost 1.52.0 提供 .tar.gz 與 .tar.bz2 兩種格式,下載 .tar.gz 並放置於 /usr/local/:
cd /usr/local/
wget https://boostorg.jfrog.io/artifactory/main/release/1.52.0/source/boost_1_52_0.tar.gz
tar -zxvf boost_1_52_0.tar.gz
cd boost_1_52_0/
./bootstrap.sh
此腳本會檢測編譯器、Python 等依賴,生成 b2(舊版稱 bjam)構建工具與 project-config.jam 配置文件。
./b2 install
預設安裝至 /usr/local,包含所有庫的靜態/動態版本、單線程/多線程、Debug/Release 變體,耗時約 10-30 分鐘視機器性能而定。
常用加速/定製參數:
-j$(nproc):並行編譯,利用所有 CPU 核心。--with-thread --with-filesystem --with-system:僅構建需要的庫,大幅縮短時間。variant=release link=static threading=multi:僅構建發布版靜態多線程庫。cxxflags="-fPIC":生成位置無關碼,便於製作共享庫。示例:./b2 -j4 --with-thread --with-filesystem variant=release link=static threading=multi install
若安裝至非標準路徑,需設定:
export CPLUS_INCLUDE_PATH=/usr/local/boost_1_52_0:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/boost_1_52_0/stage/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/boost_1_52_0/stage/lib:$LD_LIBRARY_PATH
或將庫路徑加入 /etc/ld.so.conf.d/boost.conf 並執行 ldconfig。
使用同樣的 test.cpp,但需顯式指定頭文件與庫路徑(若未配置環境變數):
g++ test.cpp -o test -I/usr/local/boost_1_52_0 -L/usr/local/boost_1_52_0/stage/lib -lboost_system
./test
輸出 123456 表示源碼編譯安裝成功。
| 維度 | APT 安裝 (libboost-dev) | 源碼編譯安裝 |
|---|---|---|
| 速度 | 秒級 | 10-30 分鐘 |
| 版本控制 | 倉庫版本(通常較舊) | 完全可控,可鎖定特定版本 |
| 編譯優化 | 通用預設選項 | 可定製:指令集、靜態/動態、LTO 等 |
| 維護成本 | 隨系統更新自動維護 | 需手動升級/打補丁 |
| 適用場景 | 學習、快速原型、CI 環境 | 生產部署、嵌入式交叉編譯、性能敏感項目 |
bootstrap.sh 失敗:檢查是否安裝 g++、python3、libicu-dev。b2 編譯報錯 zlib:安裝 zlib1g-dev。/opt/boost/1.52.0,配合 update-alternatives 或 CMake find_package 切換。-I 路徑指向含 boost/ 目錄的父目錄。Ubuntu 下部署 Boost 庫,APT 適合「開箱即用」,源碼編譯適合「精準控制」。掌握兩種方式並理解其背後的構建機制(Bootstrap → b2 → 階段式安裝),能讓您在不同專案階段靈活選擇。建議新專案優先嘗試現代 CMake FetchContent 或 Conan/vcpkg 等包管理器,進一步簡化依賴管理流程。