有没有办法指定gmake备用编译器目录。即:我安装了多个编译器,并在编译时尝试使用备用gcc。
就像我指定它使用新指定的gcc。
gmake CC=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc
CXX=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/g++
LD=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc
AR=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ar
我想避免的是指定所有工具的绝对路径。我正在尝试像
这样的东西gmake COMPILER_DIR=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/
这也可能适合作为交叉编译问题。
答案 0 :(得分:0)
在makefile中你可以使用这样的东西:
CC = $(COMPILER_DIR)gcc
如果您未定义COMPILER_DIR
,则将使用正常系统gcc
,否则将使用您的目录。
答案 1 :(得分:0)
仅供将来参考,这是crosstool工具chainkit的建议。
方法1
而不是使用完整的/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/
使用PATH=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin
并在make文件中将CC=$(CROSSCOMPILERVERSION)gcc
保留在CROSSCOMPILERVERSION=i686-unknown-linux-gnu
这个设置最佳的位置,仍然不确定如何。
方法2
使用method.1中建议的路径,但另外在crosstool bin目录中创建softlink。像在/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin
中添加i686-unknown-linux-gnu-gcc的软链接作为gcc。这比更改makefile更容易(或者你没有权限更改makefile)
答案 2 :(得分:0)
当您构建binutils
和gcc
时,它们将安装在两个不同的路径中:
bin/PREFIX-gcc
PREFIX/bin/gcc
这允许您在路径中有多个交叉编译器,每个交叉编译器具有不同的可执行文件名称,但您也可以简单地将第二个变体放在路径中,使gcc
现在成为选择的交叉版本。这对Makefile非常有用。
您的示例已使用第二种形式:/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ar
而不是/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ar
(可能也存在于您的系统中)。
因此,您可以使用PATH=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/:$PATH make ...
进行构建,现在默认的gcc
将是交叉版本。