问题标签 [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.

0 投票
1 回答
613 浏览

bash - 如何禁用 devtoolset-8?

我有一个执行命令的 bash 脚本

scl enable devtoolset-8 'echo -e "%__ld $(which ld)\n%__nm $(which nm)\n%__objcopy $(which objcopy)\n%__objdump $(which objdump)\n%__strip $(which strip)"'

完成组装后,我需要“关闭”gcc-8。

我怎样才能通过 bash 做到这一点?

0 投票
1 回答
154 浏览

msbuild - 我在 VS 2019 中创建了一个新项目,它没有编译,因为 VS 找不到 Toolset v142

新项目的“模板”是 MFC 动态链接库。问题似乎归结为 Visual Studio 正在寻找不存在的文件夹“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\Win32\PlatformToolsets\v142”。我已经运行并重新运行了 Visual Studio 安装程序 - 总是为工具集 v142 添加更多内容,但似乎没有任何帮助。有没有办法让这个文件夹出现?里面有正确的东西吗?

实际上,我正在将现有项目从无数版本升级回使用 VS 2019 编译。因为我无法编译它,所以我尝试创建一个新项目来填充旧项目中的文件,而问题发生在之前我什至在其中添加了任何文件。

我已经完成了类似的过程来为以前版本的 VS 编译我的项目,但以前从未遇到过这个问题。任何帮助表示赞赏。

0 投票
2 回答
84 浏览

makefile - 递归 Make 传递不正确的 -j 参数

我正在使用递归 Makefile 运行 make (GNU Make 3.82)。
我正在运行make -j2以仅并行生成 2 个进程。
内部 Makefile 用 $(MAKE) 调用。

但是,看起来内部 Makefile(由主 Makefile 启动)无限生成进程,就好像它是给定的-j,而不是-j2.

为了验证这一点,我转储了孩子“make”的环境变量:

MAKEFLAGS没有在任何地方显式设置,并且-j只在命令行中提供,并且不会出现在 makefile 的任何地方。因此,似乎“make”本身决定在为孩子“make”-j编写时从论点中去除“2”。MAKEFLAGS

知道什么可能导致“make”设置MAKEFLAGS-j而不是-j2


更新 1

我已经确定了问题,但我仍然不明白为什么会发生以及如何解决。

问题是当子制作在SCL上下文下运行时,作业服务器无法正常工作。
这是必需的,因为我需要子制作才能使用特定的 gcc 工具链。

像这样运行时,子制作会产生无限数量的作业。删除 SCL 后,它会按预期工作。

  • 为什么 SCL 会干扰 make 的作业服务器?
  • 我该如何解决这个问题?我知道我可以在运行外部 Makefile 之前启用 SCL,但我想从 Makefile 中控制工具集。

更新 2

这似乎与SCL更改PATH环境变量的事实有关。在 newPATH上,“make”是较新的(“GNU Make 4.2.1”)。

因此,如果顶级 make 正在运行旧的 GNU Make 3.82 并且子 make 正在运行更新的 4.2.1 make,那么 make 作业服务器似乎会失败,也许这些版本之间在 make 与子 make 通信的方式上发生了一些变化。

0 投票
0 回答
157 浏览

boost - 使用 devtoolset-10 和符合 gcc 7.5.0 的 boost 1.73 静态库的分段错误

我安装了 boost 1.73 静态库 (.a) 和 RHEL devtoolset-10,我执行以下步骤

检查 LD_LIBRARY_PATH 指向

/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/ rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib

我将 CXX 和 CC 分别设置为 /opt/rh/devtoolset-10/root/bin/g++ 和 /opt/rh/devtoolset-10/root/bin/gcc

这是我的makefile的片段

这三个地方发生分段错误..我得到了引发错误的提升功能,这些是

boost::filesystem::path src(sourcepath);

也是我的 rhel.map 文件中的一个片段

(boost::filesystem::path::operator/=(boost::filesystem::path const&)) /opt/rh/devtoolset-10/root/usr/lib/gcc/x86_64-redhat-linux/10/libstdc++ .a(bad_alloc.o) /home/boost/lib/linux.2_6.x86_64/libboost_filesystem.a(directory.o) (std::bad_alloc 的类型信息) /opt/rh/devtoolset-10/root/usr/lib /gcc/x86_64-redhat-linux/10/libstdc++.a(class_type_info.o) obj/Action.o (vtable for __cxxabiv1::__class_type_info) /opt/rh/devtoolset-10/root/usr/lib/gcc/x86_64 -redhat-linux/10/libstdc++.a(del_op.o) /home/boost/lib/linux.2_6.x86_64/libboost_filesystem.a(exception.o) (operator delete(void*)) /opt/rh/devtoolset -10/root/usr/lib/gcc/x86_64-redhat-linux/10/libstdc++.a(del_ops.o) obj/Action.o (operator delete(void*, unsigned long)) /opt/rh/devtoolset- 10/root/usr/lib/gcc/x86_64-redhat-linux/10/libstdc++.a(del_opv.o) obj/CZip。o (操作符删除) /opt/rh/devtoolset-10/root/usr/lib/gcc/x86_64-redhat-linux/10/libstdc++.a(dyncast.o) obj/Action.o (__dynamic_cast) /opt/rh /devtoolset-10/root/usr/lib/gcc/x86_64-redhat-linux/10/libstdc++.a(eh_alloc.o) obj/Action.o (__cxa_allocate_exception)

此外,如果我使用 -g 标志,我会得到这个和类似的 DWARF 调试错误

DWARF 错误:在偏移量 23b28 处找不到变量规范

该代码在具有 gcc 9.3.1 的 ubuntu 中运行良好,但在带有 devtoolset 的 rhel-7 中,它给出了分段错误(核心转储)

我的链接有错误吗?

0 投票
0 回答
44 浏览

gcc - 使用 devtoolset-10 使用最新的 GCC 编译系统,同时排除特定项目

我们有一个庞大的代码库,使用许多旧版 Linux 编译器编译,适用于许多 Linux 风格。我们想使用最新的 GCC 编译器,使用 devtoolset(例如 RH 的 devtoolset-10)。如果使用“scl enable devtoolset-10 make”运行make,它工作正常。问题是,我们希望排除特定项目使用工具集 GCC 并使用原始编译器。我们有一个主生成文件,以及每个项目(子文件夹)的特定生成文件。有任何想法吗?非常感谢。

0 投票
1 回答
70 浏览

centos - 启用了堆栈保护器,但在使用 devtoolset-8 安装 VirtualBox Guest Additions 时编译器支持中断

注意:这个问题,我已经解决了,与 Stack Overflow 上的所有其他类似问题是一个非常不同的问题。我发布了这个问题和答案,希望它能帮助遇到同样问题的其他人(或者这样,当我在 3 年后再次遇到这个问题时,我会找到这个答案)。

我在 macOS Catalina 10.15.7 上运行 VirtualBox 6.1.26。我正在模拟centOS 7:

我“插入”了 VirtualBox Guest Additions CD 并按照自动运行提示安装了 Guest Additions。中途,它中止了,说:

请注意,我已经安装了 gcc、make、perl、kernel-devel 和 kernel-headers。它还提示我检查文件/var/log/vboxadd-setup.log以获取更多详细信息。该日志的内容很有趣:

广泛搜索这些错误会产生多个论坛帖子和 Stack Overflow 问题,其回复和接受的答案表明我缺少其中一个已安装的软件包(我没有)或者我的 GCC 版本低于 7.3(当支持CONFIG_RETPOLINE=y是添加)。然而:

这是> 7.3,因此它确实支持此功能。我应该注意,我使用 Yumdevtoolset包安装了 GCC,以便使用这个较新的编译器:

而且我没有安装任何其他 GCC 版本:

我有这个在登录~/.bashrc时启用:devtoolset

我究竟做错了什么?

0 投票
3 回答
433 浏览

centos7 - 在 CentOS-7 中更新 /usr/include/c++

我已经devtoolset-10在 CentOS 7 上安装了这个包并运行了/opt/rh/devtoolset-10/enable脚本,所以现在当我这样做时:

我明白了:

伟大的。麻烦的是,下面的标题/usr/include/c++仍然指向 ye olde libstdc++-4.8.5。也就是说,如果我ls在 中做/usr/include/c++,我看到的只是:

“启用”libstdc++-10成为默认系统 C++ 标准库的魔法咒语是什么?

0 投票
1 回答
142 浏览

gcc - 使用 devtoolset-10 更新 GLIBCXX

我们在 CentOS 7 中使用 devtoolset-10(操作系统中 gcc 的“实际”默认版本是 4.8.5,但在 devtoolset 中我们使用 10.2.1 版本,这是项目的实际实际版本)。

命令gcc --version返回 10.2.1,但是在我们运行的目标文件编译不成功后ldd target_file,这表示 target_file 与/lib64/libstdc++.so.6文件链接,该文件支持旧版本的 gcc(strings -a /lib64/libstdc++.so.6 | grep GCC返回 4.8 版本的 gcc)

TL;博士

问题source <...>/devtoolset-10/enable:命令后取消链接 gcc 相关的共享对象和库

0 投票
1 回答
33 浏览

python-3.x - 如何在同一个 SCL shell 中安装 Python3 和 GCC 7?

我正在尝试在虚拟环境中的 RHEL7 上安装图形工具;它同时使用 Python 3 和 gcc 7 或更高版本。我无法在同一个 scl bash shell 中同时使用它们。

有没有办法在第一个环境(rh-python36)中更新 gcc?

谢谢。

0 投票
0 回答
6 浏览

centos - yum install 后软件包的版本没有改变

我想像这样使用 yum 安装 devtoolset-8:

新安装的包,例如 c++ 在/opt/rh/devtoolset-8/root/bin/. 但是,安装的 g++ 版本不会改变:

我如何使用包到 yum 默认安装的地方?