编译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.
如果直接运行此命令(在创建conftest.c之后)输出将是相同的。
什么是 exec:89: -o: 未找到?哪个程序写的? 89线在哪里?
导出 LD_CONFIG_PATH 或在 /etc/ld.so.conf 中添加包含 GMP、MPFR、MPC 路径的行等解决方案对我不起作用。
哪里可以找到这个问题的解决方案?
Update.看来是配置问题。 Gcc 有非常好的选项 -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
如上所述失败。
哪里需要解决这个问题?要像这样接到电话:
执行为-o conftest.o conftest.s
在哪里设置变量 ORIGINAL_AS_FOR_TARGET 的好地方?