mips编译LSB MSB

时间:2011-09-02 09:10:56

标签: gcc compilation mips

我正在为MIPS处理器(little-endian arch)交叉编译开源库oRTP。我的开发系统是i386 linux。我将配置脚本作为

运行

./configure --host=mips-linux

configure脚本使用mips-linux-gnu-gcc编译器并构建库。但是,当我尝试将库与可执行文件链接时,我得到未定义的符号,表示ortp lib是为big-endian构建的,并且目标是little-endian。

在目标上的现有可执行文件上运行file命令显示

  

ELF 32位LSB可执行文件,MIPS,MIPS32 rel2版本1,动态   链接(使用共享库),对于GNU / Linux 2.6.12,与未知   能力0xf41 = 0x756e6700,具有未知能力0x70100 =   0x1040000,未剥离

在ortp对象文件上运行file显示

  

ELF 32位MSB可重定位,MIPS,MIPS32 rel2版本1(SYSV),带   未知能力0x41000000 = 0xf676e75,具有未知能力   0x10000 = 0x70401,未剥离

尽管两者都是为MIPS构建的,但现有的可执行文件是LSB,其中ortp编译的目标文件是MSB。

如何编译MIPS和LSB以便链接正常?

1 个答案:

答案 0 :(得分:3)

嗯,我觉得自己很糟糕。我明确地将CC编译器命名为mipsel-linux-gcc,问题得到了解决。

CC = / path / to / mipsel-linux-gcc ./configure --host = mips-linux

所以要做的就是使用mipsel-linux-gcc编译器,以防你编译小端mips处理器,并使用mips-linux-gcc only编译器来处理big-endian mips处理器。