我正在嘗試在 Ubuntu 18.04 計算機上運行一些調用 XGBoost 的程式碼。此程式碼失敗AttributeError: 'XGBoostCostModel' object has no attribute 'pool'
,根本原因是:
Error message(s): ["/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/anaconda/envs/spell/lib/libxgboost.so)"]
我對C/C++打包工具鏈一無所知。運行以下程式碼片段(在類似問題的其他一些答案中建議)將返回以下內容:
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.4
GLIBC_2.18
GLIBC_2.16
GLIBC_2.3.4
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
GLIBCXX_3.4.26
確實似乎在這個列表中缺失了。但是,我不知道apt
需要運行什麼命令才能獲得足夠新的內容。當我運行apt-get update && apt-get install libstdc++6
(不sudo
,因為這是在 Docker 容器中)時,我被告知:
libstdc++6 is already the newest version (8.4.0-1ubuntu1~18.04).
怎麼辦?
答案1
一位同事建議降級到舊版的xgboost
.這樣做解決了這個問題(使用xgboost==1.1.0
)。
AFAICT 這意味著最新版本xgboost
與 Ubuntu 18.04 不相容,因為它們使用的編譯器工具鏈版本對於 18.04 來說太新且不受 18.04 支援。