eosio.cdt从1.2 升级到1.4.1 后, 编译合约
$eosio-cpp -o hello.wasm hello.cpp --abigen
出现下面的提示:
/usr/opt/eosio.cdt/1.4.1/bin/clang-7:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:version `GLIBCXX_3.4.22' not found
(required by/usr/opt/eosio.cdt/1.4.1/bin/clang-7)
查找libstdc++.so.6中GLIBCXX的版本信息得到如下结果:
开始按照eosio repo(https://github.com/EOSIO/eosio.cdt/issues/284)中方法尝试更新libstdc++6
$ sudo apt-get update
$ sudo apt-get install libstdc++6
更新完成后,运行eosio-cpp, 错误依旧,后来从https://forum.linuxgameconsortium.com/t/libstdc-so-6-version-glibcxx-3-4-22-not-found-fix/316
找到解决方法,记录如下:
$sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$sudo apt-get update
$sudo apt-get install gcc-4.9
$sudo apt-get upgrade libstdc++6 //这条命令要执行十几分钟
上面的命令执行完成后,执行下面的命令更新包依赖
$ sudo apt-get dist-upgrade
几分钟过后,上面的命令执行完毕,再次查看GLIBCXX的版本,得到更新后的结果:
接下来可以顺利运行eosio-cpp:
$ eosio-cpp -o hello.wasm hello.cpp –abigen
warning, emptyricardian clause file
备注:实际上从eosio. cdt 1.3就开始出现这种问题
网友评论