在 CentOS 上使用 Conan 管理 Boost 依赖时出错

Error using Conan to manage Boost dependency on CentOS

提问人:thebugger 提问时间:8/30/2023 最后编辑:thebugger 更新时间:8/31/2023 访问量:71

问:

我正在使用最新的 Conan 1.* 版本来处理对旧 CentOS 发行版的依赖。 一切正常,除了 Boost,它显然使用了一种叫做 B2 的东西:

b2: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by b2)
b2: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by b2)

libstdc++.so 的实际正确版本可以在 中找到,但 B2 无法看到这一点。/opt/rh/devtoolset-12/root/lib/gcc/x86_64-redhat-linux/12

我想我在我的柯南个人资料上设置了所有内容:

[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=12.2
compiler.libcxx=libstdc++11
build_type=Release
[options]
[build_requires]
[env]
PATH=/opt/rh/devtoolset-12/root/bin:/opt/rh/devtoolset-12/root/lib/gcc/x86_64-redhat-linux/12:/opt/rh/devtoolset-12/root/lib64

我正在执行通常的命令:

conan install ../../conanfile.txt --build missing

在柯南 2.0 之前,一切都可以正常工作

我什至不确定 Boost 需要做什么,因为 afaik 它是一个仅标头库,我的期望是它最容易处理

我的 Conanfile.txt如下:

[requires]
benchmark/1.7.0
boost/1.83.0
gtest/1.10.0

[generators]
cmake

[layout]
cmake_layout

我也试图降级 Boost,但总是出现同样的错误

C++ Linux Boost CentOS 柯南

评论

0赞 Alan Birtles 8/30/2023
尝试conan install ../../conanfile.txt --build missing --build b2
0赞 drodri 8/30/2023
b2是 boost 的构建系统,并且预编译的二进制文件与您的机器不兼容(可能会发生其他包也不兼容的情况,并且稍后会崩溃,您可能需要从源代码构建所有包。--build="*"
0赞 drodri 8/30/2023
还建议放下发电机并使用 和 。遗留生成器无法使用并被废弃(在柯南 2.0 中已被删除)cmakeCMakeDepsCMakeToolchaincmakecmake_layout
0赞 thebugger 8/30/2023
我正在尝试所有建议。B2 似乎无法编译。唯一有意义的错误似乎是这个:/usr/bin/env: sh: No such file or directory
0赞 Alan Birtles 8/31/2023
你的 centos 版本有多旧?看起来不起作用?或者也许 stackoverflow.com/questions/18172405/....../usr/bin/env sh

答:

1赞 Alan Birtles 8/31/2023 #1

您需要构建而不是使用需要更新操作系统的 conan center 版本。为此,您可以运行:b2

conan install ../../conanfile.txt --build missing

您的个人资料中不包括标准目录,这意味着找不到标准程序。将以下目录添加到列表末尾:PATHsh

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin