我想在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