x86 컴퓨터에서 gcc를 사용하여 MIPS 바이너리를 생성하고 싶습니다. MIPS 크로스 컴파일러를 설치하기 위해서 나는 this page에 대한 지시를 따랐다. gcc와 binutils를 성공적으로 설치할 수 있습니다. 크로스 컴파일러를 사용하여 간단한 hello world 프로그램을 컴파일하려고했습니다.밉스 크로스 컴파일러에서 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/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
나는 문제가 무엇인지 확실하지 않다 :
/opt/cross/bin/mipsel-unknown-linux-gnu-gcc -B/usr/lib/i386-linux-gnu -mips1 hi.c
지금이 오류 메시지가 표시됩니다. 내가 생각할 수있는 유일한 것은 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를 참조하십시오. 바이너리도 다운로드 할 수 있습니다. –
런타임 라이브러리가 누락되었습니다. 전체 개발 환경에는 컴파일러와 binutils 외에도 MIPS 용 라이브러리가 필요합니다. –