在 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 变量。但是,makefile 中的显式赋值或带有命令参数的赋值会覆盖环境。 (如果指定了-e
标志,则环境中的值会覆盖 makefile 中的分配。但这不是推荐的做法。)
推荐的做法是在make
命令行上传递这些变量:
$ make CC=gcc-4.4 CPP=g++-4.4 CXX=g++-4.4 LD=g++-4.4
附注是CXX
用于编译C++ 代码,而CPP
用于预处理。要么makefile 的作者将CPP
与CXX
混淆,要么makefile 确实使用CPP
来生成依赖关系,这在过去十年左右是不必要的。详情请见this。
【讨论】:
以上是关于在 shell 中为 make 设置 GCC 版本的主要内容,如果未能解决你的问题,请参考以下文章
redora24版本,安装redis,解压redis,进入redis包,输入make命令。提示gcc命令找不到。新手,求指导。