2020年1月1日 星期三

installing boost 166

issue:

 # cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Boost: Found unsuitable version "1.65.1", but required is at
  least "1.66.0" (found /usr/include)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:391 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:2179 (find_package_handle_standard_args)
  CMakeLists.txt:39 (find_package)


-- Configuring incomplete, errors occurred!
See also "/root/trojan/build/CMakeFiles/CMakeOutput.log".
See also "/root/trojan/build/CMakeFiles/CMakeError.log".

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 庫

  1. 訪問 Boost 官方網站: 前往 Boost 官方下載頁面:https://www.boost.org/users/download/

  2. 選擇版本: 查找並下載符合項目要求或更高版本的 Boost。例如,如果項目要求 1.66.0,您可以下載 1.66.0 或任何更新的版本(例如 1.70.01.75.0 等)。通常,選擇最新的穩定版本是個不錯的選擇,除非項目明確指定了特定版本。

    • 您會看到類似 boost_1_xx_0.tar.gzboost_1_xx_0.zip 的壓縮包。推薦下載 .tar.gz 格式。
  3. 下載到您的伺服器: 您可以使用 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 庫

  1. 創建一個臨時目錄 (可選,但推薦):

    Bash
    mkdir ~/boost_install
    mv boost_1_xx_0.tar.gz ~/boost_install/
    cd ~/boost_install/
    

    (將 boost_1_xx_0.tar.gz 替換為您下載的實際文件名)

  2. 解壓縮文件:

    Bash
    tar -zxvf boost_1_xx_0.tar.gz
    

    這會創建一個名為 boost_1_xx_0 的目錄。

  3. 進入解壓縮後的目錄:

    Bash
    cd boost_1_xx_0
    

步驟 3:編譯和安裝 Boost 庫

Boost 的編譯過程分為兩步:bootstrapb2 install

  1. 運行 bootstrap.sh 這個腳本會生成 b2 (或 bjam) 可執行文件,它是 Boost 的構建系統。

    Bash
    ./bootstrap.sh
    
    • 提示: 您可以運行 ./bootstrap.sh --help 查看更多選項,例如指定編譯器、安裝路徑等。但對於大多數情況,直接運行即可。
  2. 運行 b2 install 這將編譯 Boost 庫並將其安裝到系統的默認位置。

    Bash
    sudo ./b2 install
    
    • 注意: 這個過程會耗費一些時間,具體取決於您的系統性能。
    • 默認安裝路徑:
      • 頭文件 (headers):/usr/local/include/boost
      • 編譯後的庫文件 (libraries):/usr/local/lib

步驟 4:重新運行 CMake 配置

在 Boost 庫安裝完成後,返回到您項目 (例如 Trojan) 的 build 目錄,然後重新運行 CMake 配置命令。

  1. 返回項目 build 目錄:

    Bash
    cd /root/trojan/build
    

    (請替換為您實際的項目 build 目錄路徑)

  2. 重新運行 CMake:

    Bash
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    

    現在,CMake 應該能夠找到並使用您剛剛安裝的符合版本要求的 Boost 庫,並且配置過程應該會成功完成。

故障排除 (如果 CMake 仍然找不到 Boost):

如果重新運行 CMake 後仍然遇到 Boost 找不到的問題,可能是因為 CMake 仍然優先使用了舊版本的 Boost 或沒有正確識別新安裝的路徑。您可以嘗試以下方法:

  1. 清除 CMake 緩存:build 目錄中,刪除 CMakeCache.txt 文件和 CMakeFiles 目錄,然後重新運行 CMake。

    Bash
    rm CMakeCache.txt
    rm -rf CMakeFiles/
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    
  2. 手動指定 Boost 路徑 (如果需要): 如果 CMake 仍然無法找到,您可以手動指定 Boost 的根目錄和庫目錄給 CMake。

    Bash
    cmake .. \
      -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 版本不匹配的問題,並繼續編譯您的項目。

沒有留言:

張貼留言

大乐透号码选取器

大乐透号码选取器 (带历史记录) 大乐透号码选取器 前区号码 (5个,01-35) ...