Ale*_*x T 13 linux gcc avr compilation
编译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.
Run Code Online (Sandbox Code Playgroud)
在我的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.
Run Code Online (Sandbox Code Playgroud)
如果此命令直接运行(在创建conftest.c之后)输出将是相同的.
什么是exec:89:-o:没找到?写哪个程序呢?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=""
Run Code Online (Sandbox Code Playgroud)
当它形成命令行调用时,我们有:
exec -o conftest.o conftest.s
Run Code Online (Sandbox Code Playgroud)
如上所述失败.
哪有必要解决这个问题?要得到这样的调用:exec as -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
Run Code Online (Sandbox Code Playgroud)
然后你需要设置一些环境变量以便 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
Run Code Online (Sandbox Code Playgroud)
现在您可以配置和编译 GCC。确保从完全空的构建目录开始,否则 gcc/as 等将不会重新创建。
| 归档时间: |
|
| 查看次数: |
9474 次 |
| 最近记录: |