Centos中如何更改CC的链接

Centos中如何更改CC的链接

我写信询问编译时如何选择gcc的版本。在我的机器上,我相信安装了多个版本的 gcc。因为命令“gcc -v”返回“gcc version 6.4.0 (GCC)”,而命令“cc”返回“gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)”。我知道“cc”实际上链接到 gcc 编译器。在 makefile 中,'CC ?= gcc' 应该是将 cc 链接到 gcc 的命令。

那么,这是否意味着我编译时始终使用 gcc 4.4.7 ?请问,我应该如何更改 cc 或 makefile 以使其链接到较新的 gcc 版本?顺便说一句,我没有使用“sudo”命令的权限。

编辑:感谢您的回复。 type -a cc 的输出是 'cc is /usr/bin/cc' 另一个输出是 'gcc is /util/bin/gcc gcc is /usr/bin/gcc' 上面的路径是 gcc 6.4,下面的路径是一个是旧版本。

答案1

CC你的makefile只是变量。您可以指定系统中的任何编译器或可执行文件。

找到你的“新”gcc 的直接路径并将其放在上面CC={Path} ,编译应该没问题。

答案2

线路

CC ?= gcc

Makefile 中的意思是“如果变量CC尚未设置,请将其设置为gcc”。

稍后在Makefile中,CC变量中列出的编译器将用于编译C语言文件(CC是C编译器的标准变量)。

如果gcc是您要使用的编译器,则无需更改任何内容。

如果你想使用另一个编译器,例如clanggcc-7或其他完全不同的东西,你可以不是必须更改Makefile。相反,只需说

make CC=clang

在命令行上(其中clang可能只是编译器可执行文件名称,或者它的完整路径(如果您自己的 中不可用$PATH))。

要使用ccache(一个“编译器缓存”)例如clang

make CC='ccache clang'

由于 MakefileCC在将变量设置为 之前会测试变量是否已设置gcc,因此上述方法是make使用不同编译器调用的最佳方法。如果它无条件地设置了值CC,那么您将不得不编辑 Makefile。

相关内容