在 shell 中为 make 设置 GCC 版本

Posted

技术标签:

【中文标题】在 shell 中为 make 设置 GCC 版本【英文标题】:Set GCC version for make in shell 【发布时间】:2016-10-04 13:51:03 【问题描述】:

我安装了两个 gcc(同样适用于 g++)版本。较新的是默认的:

/usr/bin/gcc      # 4.9.2
/usr/bin/gcc-4.4  # 4.4.7

对于我的 make 命令,我想使用 gcc-4.4 / g++-4.4。

我已经尝试了这三个变体,但似乎没有一个可以工作:

export CC="gcc-4.4"
export CPP="g++-4.4"

export CC=/usr/bin/gcc-4.4
export CPP=/usr/bin/g++-4.4

export gcc=/usr/bin/gcc-4.4
export g++=/usr/bin/g++-4.4

Makefile 定义:

# Compiler Options
CC       = gcc
CPP      = g++
LD       = g++

Makefile 使用的编译器仍然是 4.9.2。如何使用 4.4.7?

【问题讨论】:

【参考方案1】:

GNU Make manual, 6.10 Variables from the Environment:

make 中的变量可以来自运行make 的环境。 make 在启动时看到的每个环境变量都会转换为具有相同名称和值的 make 变量。但是,ma​​kefile 中的显式赋值或带有命令参数的赋值会覆盖环境。 (如果指定了 -e 标志,则环境中的值会覆盖 makefile 中的分配。但这不是推荐的做法。)

推荐的做法是在make命令行上传递这些变量:

$ make CC=gcc-4.4 CPP=g++-4.4 CXX=g++-4.4 LD=g++-4.4

附注是CXX 用于编译C++ 代码,而CPP 用于预处理。要么makefile 的作者将CPPCXX 混淆,要么makefile 确实使用CPP 来生成依赖关系,这在过去十年左右是不必要的。详情请见this。

【讨论】:

以上是关于在 shell 中为 make 设置 GCC 版本的主要内容,如果未能解决你的问题,请参考以下文章

CentOS常见问题应对,升级make和gcc版本

gcc make和gnu make的区别,一般是用哪个?

多gcc版本环境下 CMake 编译失败

Cmake:未设置 CMAKE_MAKE_PROGRAM

redora24版本,安装redis,解压redis,进入redis包,输入make命令。提示gcc命令找不到。新手,求指导。

linux make: arm41-unknown-linux-gcc:命令未找到