编译gcc 4.6.2(不能计算目标文件的后缀)

编译gcc 4.6.2时出现问题:

checking for avr-gcc... /data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/ -B/data/data6/soft/programming/gcc-avr/avr/bin/ -B/data/data6/soft/programming/gcc-avr/avr/lib/ -isystem /data/data6/soft/programming/gcc-avr/avr/include -isystem /data/data6/soft/programming/gcc-avr/avr/sys-include checking for suffix of object files... configure: error: in `/data/data6/soft/src_build/gcc-4.6.2/avr/libgcc': configure: error: cannot compute suffix of object files: cannot compile See `config.log' for more details. 

在我的gcc-4.6.2 / avr / libgcc / config.log中我发现:

 configure:3268: /data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/ -B/data/data6/soft/programming/gcc-avr/avr/bin/ -B/data/data6/soft/programming/gcc-avr/avr/lib/ -isystem /data/data6/soft/programming/gcc-avr/avr/include -isystem /data/data6/soft/programming/gcc-avr/avr/sys-include -c -g -O2 conftest.c >&5 exec: 89: -o: not found configure:3272: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "GNU C Runtime Library" | #define PACKAGE_TARNAME "libgcc" | #define PACKAGE_VERSION "1.0" | #define PACKAGE_STRING "GNU C Runtime Library 1.0" | #define PACKAGE_BUGREPORT "" | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:3286: error: in `/data/data6/soft/src_build/gcc-4.6.2/avr/libgcc': configure:3289: error: cannot compute suffix of object files: cannot compile See `config.log' for more details. 

如果这个命令直接运行(在创buildconftest.c之后),输出将是相同的。

什么是exec:89:-o:找不到? 哪个程序写入? 89线在哪里?

诸如导出LD_CONFIG_PATH或在/etc/ld.so.conf中添加带有GMP,MPFR,MPCpath的行不适用于我。

哪里find解决这个问题的办法?

更新。 看来是configuration问题。 海湾合作委员会有非常好的select-v :-)我看到这是从gcc的汇编程序调用,失败。 使用选项-save-temps我保存了汇编源代码,并运行了汇编程序,但是并不重要。

而不是调用真正的汇编程序,它调用shell脚本包装,在我的情况/ data / data6 / soft / src_build / avr-gcc / gcc / as,

 ORIGINAL_AS_FOR_TARGET="" ORIGINAL_LD_FOR_TARGET="" ORIGINAL_PLUGIN_LD_FOR_TARGET="" ORIGINAL_NM_FOR_TARGET="" 

当它形成命令行调用时,我们有这样的:

 exec -o conftest.o conftest.s 

如上所述失败。

哪里有必要解决这个问题? 要这样调用:exec as -o conftest.o conftest.s

哪里好设置variablesORIGINAL_AS_FOR_TARGET?

我有交叉编译mips的问题。

第一步:为您的目标交叉编译binutils。 安装他们理智的地方。 我使用/ usr / local / [target] -gcc

确保你配置它们是–program-prefix = [target] –

像(未经测试的):

 configure --prefix=/usr/local/avr-gcc --program-prefix=avr- --target=avr 

那么你需要设置一些环境变量,以便GCC可以找到它们:

 export AR_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ar export LD_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ld export OBJDUMP_FOR_TARGET=/usr/local/avr-gcc/bin/avr-objdump export NM_FOR_TARGET=/usr/local/avr-gcc/bin/avr-nm export RANLIB_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ranlib export READELF_FOR_TARGET=/usr/local/avr-gcc/bin/avr-readelf export STRIP_FOR_TARGET=/usr/local/avr-gcc/bin/avr-strip export AS_FOR_TARGET=/usr/local/avr-gcc/bin/avr-as 

现在你可以配置和编译GCC了。 确保从一个完全空的构建目录开始,否则gcc / as等不会被重新创建。

“建设海湾合作委员会并不是一件容易的事情,但是如果你仔细地按照说明去做并不困难,许多人急于尝试去建造它,而没有正确地阅读安装文件,并犯下一个或多个这样的常见错误:

1)不要运行./configure from gcc src dir(这是不支持的)=>你需要从gcc源代码目录之外运行configure

2)注意:如果GCC动态链接到先决条件库(GMP / MPFR / MPC),那么在构建gcc和使用安装的编译器时,共享库必须位于动态链接器的路径(LD_LIBRARY_PATH)*“

简单的例子(没有与GMP / MPFR / MPC的动态链接):

 tar xzf gcc-4.8.0.tar.gz cd gcc-4.8.0 ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0 make make install 

来源: Advogato Doc – GNU Doc