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

bla*_*dor 9 linux compiler-construction ubuntu gcc

我正在使用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.但是当我调用时,gcc -v我仍然得到了结果gcc version 4.4.5.要编译我已经带有makefile的程序,如果我这样做make,它仍然使用新版本的gcc.我make该如何判断使用旧版本?

fal*_*tro 20

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

CC=/opt/gcc-4.0.1/bin/gcc
Run Code Online (Sandbox Code Playgroud)

如果你单独在它上面工作,或者每个人都有相同的设置,这很好.或者您可以在命令行上传递它,如下所示:

make CC=/opt/gcc-4.0.1/bin/gcc
Run Code Online (Sandbox Code Playgroud)

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

export PATH=/opt/gcc-4.0.1/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

为了完整起见,在你的符号链接解决方案中,你必须调用./gcc才能获得正确的gcc实例,但恕我直言,这可能不是最好的解决方案.

HTH

  • 如果OP正在编译的包使用`configure`脚本,那么在运行`configure`之前将`CC`设置为导出的shell变量应该在生成的`Makefile`中设置它. (2认同)