gpt4 book ai didi

linux - 编译 gcc 4.6.2(无法计算目标文件的后缀)

转载 作者:IT王子 更新时间:2023-10-29 00:27:53 24 4
gpt4 key购买 nike

编译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: not found?哪个程序写的? 89线在哪里?

导出 LD_CONFIG_PATH 或在/etc/ld.so.conf 中添加 GMP、MPFR、MPC 路径等解决方案对我不起作用。

在哪里可以找到这个问题的解决方案?

更新。 看来是配置问题。 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 的好地方?

最佳答案

我在为 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 等。

关于linux - 编译 gcc 4.6.2(无法计算目标文件的后缀),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com