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

ere*_*eOn 15 c gcc scons

在我的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)
Run Code Online (Sandbox Code Playgroud)

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

我有什么办法可以代替/usr/bin/gcc,并gcc44默认的编译器不使用符号链接/usr/bin/gcc44

我不能使用符号链接的原因是因为我的代码必须使用RPM包mock.mock从头开始创建一个最小的linux安装,并在编译我的代码之前安装指定的依赖项.我无法自定义这个"最小安装".

理想的情况下,完美的解决办法是安装官方的RPM包替换gccgcc44作为默认的编译器.有这样的包裹吗?这甚至可能/好吗?

附加信息

我必须使用SCons(make替代),它不允许我指定用于的二进制文件gcc.

我也会接受任何答案,告诉我如何gcc在我的SConstruct文件中指定二进制文件.

Ykt*_*ula 14

  1. 一种方法是gcc从源代码编译和安装.

  2. http://old.nabble.com/Choosing-compiler-td4675207.html

由此:

env = Environment()
env.Replace(CC = "my_cc_compiler")
Run Code Online (Sandbox Code Playgroud)

或者,根据这个问题的答案,

cc = env['gcc44']
Run Code Online (Sandbox Code Playgroud)

  • cc=env['gcc44'] 不正确。env['CC']='gcc44' 是正确的。(尽管您可能需要对 CXX、SHCC、SHCXX、SHLINK、LINK 等执行此操作。请参阅联机帮助页了解它们的用途。 (2认同)

Fat*_*law 7

这在过去是很长的路,但我只是想我会添加我找到的解决方案,这不需要更改SConscript文件.这对我很有用,因为我需要在centos 5下构建v8,所以它可能对其他人也有用.

CC=gcc44 CXX=g++44 scons
Run Code Online (Sandbox Code Playgroud)

而已!

  • 请注意,scons(与典型的autotools项目不同)默认情况下不允许您通过环境覆盖CC/CXX变量.必须专门创建SConscript才能这样做. (11认同)