在Linux中更改默认的C编译器,使用SCons

15

在我的Linux平台上,我有几个版本的gcc

usr/bin 下我有:

  • gcc34
  • gcc44
  • gcc

以下是一些输出:

$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)

$ gcc44 --version
gcc44 (GCC) 4.4.0 20090514 (Red Hat 4.4.0-6)

我需要使用 gcc 的 4.4 版本,但默认似乎是 4.1 版本。

是否有一种方法可以更换 /usr/bin/gcc 并使 gcc44 成为 默认的 编译器,而不使用符号链接/usr/bin/gcc44

我不能使用符号链接的原因是我的代码将必须作为 RPM 包使用 mock 进行打包。 mock 会从头开始创建一个最小的 Linux 安装,并在编译我的代码之前仅安装指定的依赖项。我不能自定义这个 “最小安装”。

理想情况下,完美的解决方案是安装一个官方的 RPM 包,用 gcc44 替换 gcc 作为 默认的 编译器。是否有这样的软件包?这可行吗?

附加信息

我必须使用 SCons(一个类似于 make 的工具),它不允许 我指定要使用的 gcc 二进制文件。

我也接受任何可以告诉我如何在我的 SConstruct 文件中指定 gcc 二进制文件的答案。


什么Linux发行版?有些发行版有选择默认版本的方法。 - bdbaddog
如果您需要使用完全不同的编译器,而不仅仅是不同版本,请参考此问题:https://dev59.com/WmYs5IYBdhLWcg3wE_3e - Piotr Siupa
2个回答

14

2
cc=env['gcc44'] 是不正确的。env['CC']='gcc44' 才是正确的写法。(虽然你可能需要对 CXX、SHCC、SHCXX、SHLINK、LINK 等进行相应修改。请参考 manpage 以了解它们的用途。) - bdbaddog

7

虽然这已经是很久以前的事情了,但我想分享一下我找到的解决方案,它不需要更改SConscript文件。对于我来说非常有用,因为我需要在CentOS 5下构建v8,所以可能对其他人也有用。

CC=gcc44 CXX=g++44 scons

就是这样!


15
请注意,与典型的autotools项目不同,scons默认情况下不允许您通过环境变量覆盖CC/CXX变量。必须专门创建SConscript来完成此操作。 - nos
是的,要设置 CC 和 CXX,应该像这样调用 scons:scons CXX=clang++ CC=clang 目标 - MariuszW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接