Open zhililab opened 1 year ago
1. conan install 报错,gnu 版本过低
解决方法:
两个软件包要求使用C++11标准进行编译,而当前系统的C++标准版本(cppstd)为gnu98,低于所需版本 。当前使用 cent 7.9 机器,gcc 4.8.5 ,该如何解决这个问题
由于您当前使用的是CentOS 7.9操作系统,它默认安装的GCC版本为4.8.5,这个版本的C++标准版本最高只支持到C++03,因此需要升级GCC到支持C++11标准的版本。
有几种方法可以升级GCC,其中一种是使用DevToolSet软件集。DevToolSet是一个由Red Hat提供的软件集,其中包含了最新版本的GCC和其他开发工具。您可以使用以下命令安装DevToolSet:
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
安装完成后,您可以使用以下命令启用DevToolSet中的GCC版本:
scl enable devtoolset-9 bash
然后,您可以再次运行Conan以安装这些软件包。如果您仍然遇到问题,请确保在Conan命令中使用-s cppstd=11选项来设置所需的C++标准版本。
2. conan 依赖包 下载
conan install .
解决方法:
# 使用本地模式
conan install . --build=missing
3.conan 下载失败
abseil/20220623.0: Sources downloaded from 'conancenter'
abseil/20220623.0: Calling source() in /root/.conan2/p/absei4eff9c73765e3/s/src
abseil/20220623.0: ERROR: Error downloading file https://github.com/abseil/abseil-cpp/archive/20220623.0.tar.gz: 'HTTPSConnectionPool(host='github.com', port=443): Read timed out. (read timeout=30)'
abseil/20220623.0: Waiting 5 seconds to retry...
abseil/20220623.0: ERROR: Error downloading file https://github.com/abseil/abseil-cpp/archive/20220623.0.tar.gz: 'HTTPSConnectionPool(host='github.com', port=443): Read timed out. (read timeout=30)'
abseil/20220623.0: Waiting 5 seconds to retry...
ERROR: abseil/20220623.0: Error in source() method, line 81
get(self, **self.conan_data["sources"][self.version], strip_root=True)
ConanException: Error downloading file https://github.com/abseil/abseil-cpp/archive/20220623.0.tar.gz: 'HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /abseil/abseil-cpp/archive/20220623.0.tar.gz (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f7add706c88>, 'Connection to github.com timed out. (connect timeout=30)'))
4.编译缺失对应依赖
/root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc)
/root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc)
gmake[2]: *** [gens/src/proto/grpc/channelz/channelz.grpc.pb.cc] Error 1
gmake[1]: *** [CMakeFiles/grpcpp_channelz.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
/root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc)
/root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /root/.conan/data/protobuf/3.21.9/_/_/package/37dd8aae630726607d9d4108fefd2f59c8f7e9db/bin/protoc)
gmake[2]: *** [gens/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc] Error 1
gmake[1]: *** [CMakeFiles/grpc++_reflection.dir/all] Error 2
gmake: *** [all] Error 2
解决方法:
GLIBCXX_3.4.20 和 CXXABI_1.3.8 都是 GNU C++ 标准库的版本。在 CentOS 7.9 中,这些版本可能已经过时或不可用。您可以尝试使用以下命令来安装最新版本的 GNU C++ 标准库:
sudo yum install libstdc++-devel
这个命令会安装最新版本的 libstdc++ 库和相关的开发工具。安装完成后,您可以尝试重新运行出现错误的程序,看看是否还会报错。
如果您仍然需要使用旧版本的 GNU C++ 标准库,您可以尝试手动安装这些版本。以下是一些可能有用的资源:
GLIBCXX_3.4.20: 可能需要从源代码编译安装,具体步骤可以参考 GNU C++ 标准库的官方文档:https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_install
CXXABI_1.3.8: 这个版本通常包含在 libstdc++ 库中,因此您可以尝试使用上面提到的命令来安装最新版本的 libstdc++ 库。如果您仍然需要手动安装这个版本,具体步骤可以参考这个 Stack Overflow 的帖子:https://stackoverflow.com/questions/33394996/how-to-install-libstdc-so-6-0-21cxxabi-1-3-8-in-centos-6-7
conan center index
准备 patch
准备 recipe conanfile.py. grpc-1.41.1
修改版本号