在shell中设置make的GCC版本

Set GCC version for make in shell

本文关键字:GCC 版本 make 设置 shell      更新时间:2023-10-16

我安装了两个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?

GNU Make手册,6.10环境变量:

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的作者混淆了CPPCXX,要么是makefile确实使用了CPP来生成依赖,这在过去十年左右的时间里是不必要的。