我想在x86机器上使用gcc生成MIPS二进制文件。为了安装MIPS交叉编译器,我遵循this page的指示。我可以成功安装gcc和binutils。我试图用交叉编译器编译一个简单的hello世界程序。mrt交叉编译器中的crt1.o错误
/opt/cross/bin/mipsel-unknown-linux-gnu-gcc -mips1 hi.c
我得到了以下错误。
/opt/cross/lib/gcc/mipsel-unknown-linux-gnu/4.8.2/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory
/opt/cross/lib/gcc/mipsel-unknown-linux-gnu/4.8.2/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find crti.o: No such file or directory
/opt/cross/lib/gcc/mipsel-unknown-linux-gnu/4.8.2/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find -lc
/opt/cross/lib/gcc/mipsel-unknown-linux-gnu/4.8.2/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status
我在网上做了一些研究,找出问题所在,并将我用过的命令更改为以下内容。
/opt/cross/bin/mipsel-unknown-linux-gnu-gcc -B/usr/lib/i386-linux-gnu -mips1 hi.c
现在我收到此错误信息:
/opt/cross/lib/gcc/mipsel-unknown-linux-gnu/4.8.2/../../../../mipsel-unknown-linux-gnu/bin/ld: /usr/lib/i386-linux-gnu/crt1.o: Relocations in generic ELF (EM: 3)
/usr/lib/i386-linux-gnu/crt1.o: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
我不知道是什么问题。我能想到的唯一的事情是在构建gcc时传递给配置程序的“--without-headers”选项。在linux-mips页面上为gcc配置命令如下。
% ../gcc-3.8.2/configure --target=$TARGET --prefix=$PREFIX \
--enable-languages=c --without-headers \
--with-gnu-ld --with-gnu-as \
--disable-shared --disable-threads \
--disable-libmudflap --disable-libgomp \
--disable-libssp --disable-libquadmath \
--disable-libatomic
我希望得到一些帮助。我生成交叉编译器的系统使用gcc4.7.2-5。我使用gcc-4.8.2和binutils-2.24的源代码来生成交叉编译器。
如果您只是想为mips-linux进行交叉编译,您可能需要查看http://ellcc.org。二进制文件也可以下载。 – 2014-10-06 16:06:26
您错过了运行时库。除了编译器和binutils之外,完整的开发环境还需要为MIPS构建库。 – 2014-10-07 15:41:34