问题标签 [devtoolset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 未定义的升压参考
我正在尝试链接到使用 Boost 的第 3 方库。我已经链接到正确的 boost 库 (libboost_program_options.a),但仍然没有找到它。
错误消息(为清楚起见,进行了一些格式化):
nm --demangle libboost_program_options.a | grep 验证
第二个记录看起来很相似,但显然不够接近。知道如何编译 Boost 以获得与库中的内容匹配的签名吗?我向图书馆所有者提出请求,以查看他们正在使用的 Boost 版本等,但尚未收到回复。
这是在使用 g++ 4.8.5 版的 CentOS 7 机器上。但是我试图链接的库大量使用 C++11,并且是用 g++ v 6.1 编译的,所以我安装了 devtoolset-6,它为我提供了一个 g++ 6 环境(g++ 版本 6.3.1)
我从头开始下载并构建了 Boost (v1.65.1),因此它是使用相同的编译器构建的,而不是系统版本。
编辑...我认为 John Zwinck 走在正确的轨道上,但我无法让 boost 库编译到新的 ABI。
validate() 函数位于 value_semantic.cpp
将构建剥离到基础,并添加讨论的标志:
_GLIBCXX_USE_CXX11_ABI 宏是否仅适用于 gcc 5.1?
c++11 - 在 CentOS 7 上构建时,如何链接来自 devtoolset-7 的 libstdc++?
我想用来devtoolset-7
在 CentOS 7 上构建 C++11 应用程序。我正在尝试使用该<regex>
库,但libstdc++
CentOS 7 原生包含的版本 4.8.4不支持它。
我已按照以下说明安装和启用 SCL/ devtoolset-7
:
此时,如果我调用g++
,它是正确的版本(7.2.1),但是当我构建应用程序并ldd
在它们上运行时,它们仍然动态链接到/lib64/libstdc++.so.6
系统上的旧版本。可靠链接的最简单方法是什么devtoolset-7-libstdc++-devel-7.2.1
?我使用 CMake 3 作为构建系统。
nginx - 使用 devtoolset-3 编译 nginx 1.13.8 失败
尝试编译 nginx 时出现以下错误。我找不到任何包含 -luuid 库的 devtoolset-3 rpm。有什么建议么?
--
c++ - (如何)我可以在 Centos/RHEL 上使用新的 C++ 11 ABI 和 devtoolset-7 吗?
我的目标是在 Centos 7 上使用 gcc 7.2(和 clang 6)来构建与 Centos 7 目标兼容的可执行文件,而无需安装 devtoolset,但 * 使用较新的 C++ ABI *。
较新的 ABI 修复了库中的几个缺陷,如果不更改 ABI,这些缺陷将无法修复。例如 list::size O(1) Vs O(n),字符串没有 COW。
我在下面的问题中推测了为什么这可能不可能的答案。 -D_GLIBCXX_USE_CXX11_ABI=1 对 CentOS 7 上的 devtoolset-7 无效
c++ - C ++中的有符号整数值溢出?
我有一个遗留代码库,我们正在尝试将其迁移devtoolset-4
到devtoolset-7
. 我注意到一个关于有符号整数溢出的有趣行为(int64_t
具体来说是 )。
有一个代码片段用于在乘以一大组整数时检测整数溢出:
这段代码在 devtoolset-4 上运行良好。但是,使用 devtoolset-7,永远不会检测到溢出。
例如:当a = 83802282034166
和b = 98765432
时,
product
变为-5819501405344925872
(显然值已溢出)。
但product / b
结果等于a (83802282034166)
。因此,if
条件永远不会变为真。它的值应该是根据溢出(负)product
值计算出来的:-5819501405344925872 / 98765432 = -58922451788
具有讽刺意味的是,数学是正确的,但它导致了 devtoolset-4 的异常行为。
- 编译器是否可以缓存导致这种行为的值(而不是重新评估它)?
- 或者编译器优化是否将语句转换
product / b != a
为product != a * b
并达到相同的溢出值(或者可能只是跳过基于上述语句 where 的计算product = a * b
)?
我知道有符号整数溢出是 C++ 中的“未定义行为”,因此编译器行为可能会因实现而改变。但是有人可以帮我理解上述行为吗?
注意:devtoolset-4 和 devtoolset-7 中的 g++ 版本分别为g++ (GCC) 5.2
和g++ (GCC) 7.2.1
。
c++ - _GLIBCXX_USE_CXX11_ABI 在 RHEL6 和 RHEL7 上禁用?
我在 RHEL6 和 RHEL7 上有 gcc 5.2.1,它看起来像 _GLIBCXX_USE_CXX11_ABI 被禁用。即使我手动运行它也不起作用-D_GLIBCXX_USE_CXX11_ABI=1 -std=c++14
。这意味着我不会获得小字符串优化功能。例如,以下代码的输出总是有 8 和 'micro not set'。对于 SSO,如果我们查看 code bits/basic_string.h,std::string 的大小应该至少为 16。任何解决方法?
rpmbuild - 使用 Developer Toolset 7 时,RPM 构建无法定位 libelf.so.dts.1
我正在使用 Developer Toolset 7中的编译器为 Red Hat/CentOS 7(在 CentOS 上运行)编译软件,当我尝试创建 RPM 时,rpmbuild 失败并出现以下错误:
我没有使用 Toolset 3 看到这一点,基本上我所做的只是将构建脚本中的 3 更改为 7。
编辑:如果我禁用调试信息的提取(%define debug_package %{nil}
),我不会得到错误。
centos6 - 在 Centos 6 上找不到 devtoolset-3
这一下子就失败了。有谁知道如何规避它?谢谢。
centos - 为 CentOS 安装过时的 Devtoolset 集合
目前 Devtoolset-5(和更早的版本)无法使用yum
(只有 Devtoolset-6 和 7 可用)从 Software Collection Repository (centos-release-scl) 安装。不过,这个集合可以作为 rpm 包的列表下载。是否可以为 启用此类 EOL 集合yum
,或者是否有另一种方法可以正确安装它们?
linux - 在fish shell中启用redhats devtoolset
是否有适当的方法在启动时启用鱼壳中的 devtoolset 或任何 rh 工具?通常在 Zsh (~/.zshrc)或 Bash (~/.bashrc)中,您会添加类似于以下内容的行:
或者
不幸的是,这些在 ~/.config/fish/config.fish 中都不起作用,因为 fish 不支持语法。我知道如何做到这一点的唯一方法是将启用文件中的所有行手动添加到我的鱼路径中。