我正在为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以便链接正常?
答案 0 :(得分:3)
CC = / path / to / mipsel-linux-gcc ./configure --host = mips-linux
所以要做的就是使用mipsel-linux-gcc编译器,以防你编译小端mips处理器,并使用mips-linux-gcc only编译器来处理big-endian mips处理器。