【问题标题】:Changing default C compiler in Linux, using SCons使用 SCons 更改 Linux 中的默认 C 编译器
【发布时间】:2011-02-26 00:28:08
【问题描述】:

在我的 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 吗?

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

理想情况下,完美的解决方案是安装官方 RPM 软件包,将 gcc 替换为 gcc44 作为默认编译器。有这样的包吗?这甚至可能/很好吗?

附加信息

我必须使用SConsmake 替代)并且它不能让我指定用于gcc 的二进制文件。

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

【问题讨论】:

  • 什么linux发行版?有些有选择默认版本的方法

标签: c gcc scons


【解决方案1】:
  1. 一种方法是从源代码编译和安装gcc

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

由此而来:

env = Environment()
env.Replace(CC = "my_cc_compiler")

或者,根据this question的回答,

env['CC'] = 'gcc44'

【讨论】:

  • cc=env['gcc44'] 不正确.. env['CC']='gcc44' 正确。 (尽管您可能需要为 CXX、SHCC、SHCXX、SHLINK、LINK 等执行此操作。请参阅手册页了解它们的全部用途。
【解决方案2】:

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

CC=gcc44 CXX=g++44 scons

就是这样!

【讨论】:

  • 请注意,scons(与典型的 autotools 项目不同)默认情况下不允许您通过环境覆盖 CC/CXX 变量。必须专门创建 SConscript 才能这样做。
猜你喜欢
  • 2014-07-19
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 2023-04-08
  • 2012-01-09
  • 2011-12-11
  • 1970-01-01
  • 2017-05-04
相关资源
最近更新 更多