CMake Error
是一個非常典型的庫版本不匹配問題。錯誤訊息清楚地表明,您的系統上安裝的 Boost 庫版本是 1.65.1
,但您正在嘗試編譯的項目(看起來是 Trojan)要求至少 1.66.0
。
您提供的解決方案是正確且詳盡的:手動下載、編譯並安裝所需版本的 Boost 庫。
我將幫您將這些步驟整理成一份更清晰、更易於遵循的指南,並補充一些常見的注意事項和命令解釋。
解決 CMake 錯誤:Boost 版本不匹配問題
當您在編譯項目時遇到 CMake Error: Could NOT find Boost: Found unsuitable version "1.65.1", but required is at least "1.66.0"
這樣的錯誤,這表示您的系統上安裝的 Boost 庫版本不符合項目要求。解決方法是手動安裝符合要求的 Boost 版本。
以下是詳細的步驟:
步驟 1:下載所需版本的 Boost 庫
-
訪問 Boost 官方網站: 前往 Boost 官方下載頁面:
https://www.boost.org/users/download/ -
選擇版本: 查找並下載符合項目要求或更高版本的 Boost。例如,如果項目要求
1.66.0
,您可以下載1.66.0
或任何更新的版本(例如1.70.0
、1.75.0
等)。通常,選擇最新的穩定版本是個不錯的選擇,除非項目明確指定了特定版本。- 您會看到類似
boost_1_xx_0.tar.gz
或boost_1_xx_0.zip
的壓縮包。推薦下載.tar.gz
格式。
- 您會看到類似
-
下載到您的伺服器: 您可以使用
wget
命令直接在伺服器上下載:Bash# 示例:下載 Boost 1.76.0 (請替換為您下載的實際版本號) wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
(請將 URL 替換為您實際下載的版本鏈接)
步驟 2:解壓縮 Boost 庫
-
創建一個臨時目錄 (可選,但推薦):
Bashmkdir ~/boost_install mv boost_1_xx_0.tar.gz ~/boost_install/ cd ~/boost_install/
(將
boost_1_xx_0.tar.gz
替換為您下載的實際文件名) -
解壓縮文件:
Bashtar -zxvf boost_1_xx_0.tar.gz
這會創建一個名為
boost_1_xx_0
的目錄。 -
進入解壓縮後的目錄:
Bashcd boost_1_xx_0
步驟 3:編譯和安裝 Boost 庫
Boost 的編譯過程分為兩步:bootstrap
和 b2 install
。
-
運行
bootstrap.sh
: 這個腳本會生成b2
(或bjam
) 可執行文件,它是 Boost 的構建系統。Bash./bootstrap.sh
- 提示: 您可以運行
./bootstrap.sh --help
查看更多選項,例如指定編譯器、安裝路徑等。但對於大多數情況,直接運行即可。
- 提示: 您可以運行
-
運行
b2 install
: 這將編譯 Boost 庫並將其安裝到系統的默認位置。Bashsudo ./b2 install
- 注意: 這個過程會耗費一些時間,具體取決於您的系統性能。
- 默認安裝路徑:
- 頭文件 (headers):
/usr/local/include/boost
- 編譯後的庫文件 (libraries):
/usr/local/lib
- 頭文件 (headers):
步驟 4:重新運行 CMake 配置
在 Boost 庫安裝完成後,返回到您項目 (例如 Trojan) 的 build
目錄,然後重新運行 CMake 配置命令。
-
返回項目
build
目錄:Bashcd /root/trojan/build
(請替換為您實際的項目
build
目錄路徑) -
重新運行 CMake:
Bashcmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
現在,CMake 應該能夠找到並使用您剛剛安裝的符合版本要求的 Boost 庫,並且配置過程應該會成功完成。
故障排除 (如果 CMake 仍然找不到 Boost):
如果重新運行 CMake 後仍然遇到 Boost 找不到的問題,可能是因為 CMake 仍然優先使用了舊版本的 Boost 或沒有正確識別新安裝的路徑。您可以嘗試以下方法:
-
清除 CMake 緩存: 在
build
目錄中,刪除CMakeCache.txt
文件和CMakeFiles
目錄,然後重新運行 CMake。Bashrm CMakeCache.txt rm -rf CMakeFiles/ cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
-
手動指定 Boost 路徑 (如果需要): 如果 CMake 仍然無法找到,您可以手動指定 Boost 的根目錄和庫目錄給 CMake。
Bashcmake .. \ -DBOOST_ROOT=/usr/local \ -DBOOST_INCLUDEDIR=/usr/local/include \ -DBOOST_LIBRARYDIR=/usr/local/lib \ -DENABLE_MYSQL=OFF \ -DENABLE_SSL_KEYLOG=ON \ -DFORCE_TCP_FASTOPEN=ON \ -DSYSTEMD_SERVICE=AUTO
BOOST_ROOT
: 指向 Boost 的安裝根目錄,通常是/usr/local
。BOOST_INCLUDEDIR
: 指向 Boost 頭文件所在的目錄,通常是/usr/local/include
。BOOST_LIBRARYDIR
: 指向 Boost 庫文件所在的目錄,通常是/usr/local/lib
。
通過這些詳細步驟,您應該能夠成功解決 Boost 版本不匹配的問題,並繼續編譯您的項目。