mips 编译 LSB MSB

sth*_*tfo 3 gcc compilation mips

我正在为 MIPS 处理器(小端架构)交叉编译开源库 oRTP。我的开发系统是i386 linux。我运行配置脚本

./configure --host=mips-linux

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

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

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

file在 ortp 目标文件上运行显示

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

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

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

sth*_*tfo 7

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

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

所以要走的路是使用 mipsel-linux-gcc 编译器,以防您为小端 mips 处理器编译,并仅使用 mips-linux-gcc 编译器用于大端 mips 处理器。

  • 我遇到了同样的问题,但 mipsel-linux-gcc 在我使用的工具链中不可用。我必须使用“-EL”选项来交叉编译小端架构。 (2认同)