我希望在x86机器上使用gcc生成MIPS二进制文件。为了安装MIPS交叉编译器,我按照this page上的说明进行操作。我成功地安装了gcc和binutils。我尝试使用交叉编译器编译一个简单的hello world程序。
我在网上进行了一些研究,以确定问题所在,并将我使用的命令更改为以下内容。
现在我收到了这个错误消息:
我不确定问题出在哪里。我能想到的唯一可能就是在构建gcc时,使用了configure程序中的"--without-headers"选项。在linux-mips页面上提供的gcc配置命令如下。
/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时,使用了configure程序中的"--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的源代码来生成交叉编译器。