linux - 如何在 Linux Ubuntu 上使用 2 个不同版本的 GCC 并强制 MAKE 使用其中之一

标签 linux gcc compiler-construction ubuntu

我正在使用 gcc 4.4.5 版本附带的最新版本的 Ubuntu。我需要重新编译一个不是我写的程序,它只能用旧版本的 gcc 编译,比如 4.0。我设法配置了这个旧版本并在安装过程中使用了一个前缀,这样我的旧 gcc 版本就在/opt/gcc-4.0.1/bin 中。我尝试使用 ln -s/opt/gcc-4.0.1/bin/gcc gcc 创建符号链接(symbolic link)。但是当我调用 gcc -v 时,我仍然得到结果 gcc version 4.4.5。要编译已经带有 makefile 的程序,如果我执行 make,它仍然使用新版本的 gcc。我如何告诉 make 使用旧版本?

最佳答案

Make 使用一些标准变量来确定使用哪些工具,C 编译器变量称为“CC”。您可以直接在 Makefile 中设置 CC 变量

CC=/opt/gcc-4.0.1/bin/gcc

如果您是单独工作,或者每个人都有相同的设置,那很好。或者您可以像这样在命令行上传递它:

make CC=/opt/gcc-4.0.1/bin/gcc

第三个选项设置为/opt/gcc-4.0.1/bin 在你路径中的所有其他选项之前(这就是为什么它对你不起作用,当前目录不在路径中,所以符号链接(symbolic link)你放在那里搜索时不会考虑)

export PATH=/opt/gcc-4.0.1/bin:$PATH

为了完整性,在您的符号链接(symbolic link)解决方案中,您必须调用 ./gcc 以获得正确的 gcc 实例,但恕我直言,这可能不是最佳解决方案。

HTH

关于linux - 如何在 Linux Ubuntu 上使用 2 个不同版本的 GCC 并强制 MAKE 使用其中之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152283/

相关文章:

compiler-construction - gfortran 编译器错误?

Linux Socket::connect 和 QT::connect 混合

Linux 进程访问自己的 DWARF 调试信息?

linux - 如何更改 gitolite 上的存储库位置?

gcc - 在 Minibian 上使用 x265 和 fdk-aac 编译 ffmpeg - 未找到依赖项

c - 代码是如何执行的和gcc

c编程在linux中创建一个utf8文件

使用 header 错误 header 交叉编译应用程序和 gcc

c++ - 使用 gcc 链接库 - ld : cannot find -larpack

java - 编译代码 - 创建 IDE