龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 1906|回复: 5

gcc4.9.2,为何 -mabi=n32 用不了?

[复制链接]
发表于 2016-2-29 10:13:40 | 显示全部楼层 |阅读模式
交叉编译龙芯3a的代码。小端格式,用N32编译。 文件 aa.c 就一行代码
int aa=10;
编译命令: D:\>mips-gcc  -march=loongson3a -mabi=n32   -EL      -c -o D:/aa.o aa.c
编译输出:Assembler messages:
Fatal error: selected target format 'elf32-nlittlemips' unknown

去掉-mabi=n32,可以编译成功,但是用readelf查看ELF文件,是o32编译的,不是n32。

请问编译器是不是有问题? 别人给的编译器,我不知道怎么弄的。信息:
D:\>mips-gcc --version
mips-gcc (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mips-gcc -dumpspecs 输出内容太多,摘录:
*multilib_defaults:
EB mips1 mabi=32

*asm_abi_default_spec:
-mabi=32

*endian_spec:
%{!EL:%{!mel:-EB}} %{EL|mel:-EL}
 楼主| 发表于 2016-2-29 10:20:06 | 显示全部楼层
mips-gcc  --target-help的输出,摘录:

Known MIPS ABIs (for use with the -mabi= option):
   32 64 eabi n32 o64

-mabi=ABI               create ABI conformant object file for:
                        32, o64, n32, 64, eabi
-32                     create o32 ABI object file (default)
-n32                    create n32 ABI object file
-64                     create 64 ABI object file
 楼主| 发表于 2016-2-29 10:22:18 | 显示全部楼层
本帖最后由 Wiener 于 2016-2-29 10:28 编辑

无论 -mabi=n32  还是 -mabi=-n32 都不行。
D:\>mips-gcc  -march=loongson3a -mabi=-n32   -EL   -c -o D:/aa.o aa.c
mips-gcc: error: unrecognized argument in option '-mabi=-n32'
mips-gcc: note: valid arguments to '-mabi=' are: 32 64 eabi n32 o64
发表于 2016-2-29 11:19:51 | 显示全部楼层
你这个编译器哪来的?

另外你要查一下binutils是否支持n32
 楼主| 发表于 2016-2-29 11:25:12 | 显示全部楼层
同事基于 gcc4.9.2 官方源码重新编译的mips交叉编译工具。我不知道他是如何编译的,也不懂这一块。
 楼主| 发表于 2016-3-1 07:58:29 | 显示全部楼层
编译器配置的有问题,同事正在分析修正。结贴

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-6-20 06:10 , Processed in 0.170281 second(s), 19 queries .

快速回复 返回顶部 返回列表