2014-11-06 8 views
0

x86_64에서 libncurses를 사용하는 간단한 프로그램을 컴파일하고 싶습니다. 목표 시스템은 MIPS입니다.crosstool-ng-stdio.h : 해당 파일이나 디렉토리가 없습니다.

crosstool-ng-1.20 빌드

그러나, 간단한 인사 세계가 심하게 종료 (샘플 MIPS-알 수없는 엘프와) 잘 갔다.

#include <stdio.h>  

int main(void)   
{       
    printf("OH HAI.\n"); 
    return 0;    
}    

-

x86host:~/toolchain$ mips-unknown-elf-gcc -o hello hello.c 

hello.c:1:19: fatal error: stdio.h: No such file or directory 
#include <stdio.h> 
       ^
compilation terminated. 
내가 분명히 여기 정말 뭔가를 잘못하고 있어요

,하지만 난 시작합니까?


[편집]

는 markgz 감사드립니다. Codesourcery는 내가 필요한 것입니다.

mips-linux-gnu-gcc.exe -static -o helloStatic hello.c 

개념 증명이 완료되었습니다. 이제 ncurses 프로그램을 컴파일하십시오.

[Switch:/]$ file /mnt/sd3/user/helloStatic 
/mnt/sd3/user/helloStatic: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, 
statically linked, for GNU/Linux 2.6.16, with unknown capability 
0x41000000 = 0xf676e75, not stripped 

[Switch:/]$ uname -a 
Linux Switch 2.6.32.59-cavium-octeon2.cge-cavium-octeon #1 
SMP PREEMPT Fri May 10 11:48:14 PDT 2013 mips64 GNU/Linux 

[Switch:/]$ /mnt/sd3/user/helloStatic 
HOLIDAYS ARE COMING. 

답변

1

아마도 mips-linux-elf-gcc를 빌드해야 할 것입니다. MIPS 타겟 시스템이 빅 엔디안으로 설정되어 있습니까?

어쨌든 무료 Mentor/Codesourcery MIPS gnu/gcc 교차 컴파일 도구 체인을 here에서 다운로드하면 이러한 모든 문제를 피할 수 있습니다. 이 툴체인은 Windows와 Linux 모두에서 사용할 수 있습니다.

0
[email protected]:~/ncurses-5.9-20141101# export CC=mips-linux-gnu-gcc 
[email protected]:~/ncurses-5.9-20141101# ./configure --target=mips-linux-gnu --host=mips-linux-gnu 
[..] 
[email protected]:~/ncurses-5.9-20141101# make 

그럼, 내가 USR/포함 /에서 몇 헤더를 복사 /이 멀리 갈 수 있도록 : 미래 Google 직원

[email protected]:~/ninvaders-0.1.1# make 
In file included from ./ncurses.h:1685:0, 
      from view.h:25, 
      from view.c:25: 
./unctrl.h:54:20: fatal error: curses.h: No such file or directory 
#include <curses.h> 
       ^
compilation terminated. 
make: *** [view.o] Error 1 


[email protected]:~/ninvaders-0.1.1# make 
mips-linux-gnu-gcc -static -c -I. -O -Wall globals.c 
mips-linux-gnu-gcc -static -c -I. -O -Wall view.c 
mips-linux-gnu-gcc -static -c -I. -O -Wall aliens.c 
mips-linux-gnu-gcc -static -c -I. -O -Wall ufo.c 
mips-linux-gnu-gcc -static -c -I. -O -Wall player.c 
mips-linux-gnu-gcc -static -c -I. -O -Wall nInvaders.c 
mips-linux-gnu-gcc -static -L /root/ncurses-5.9-20141101/lib -onInvaders globals.o view.o aliens.o ufo.o player.o nInvaders.o -lncurses 
[email protected]:~/ninvaders-0.1.1# ls -l nInvaders 
-rwxr-xr-x 1 root root 933003 Nov 6 16:18 nInvaders 
[email protected]:~/ninvaders-0.1.1# mv nInvaders nInvaders_IOSXE_MIPS 

, 메이크 파일은 다음과 같습니다

CC=mips-linux-gnu-gcc -static 
CFLAGS=-O -Wall 
LIBS=-lncurses 
LDFLAGS=-L /root/ncurses-5.9-20141101/lib 

CFILES=globals.c view.c aliens.c ufo.c player.c nInvaders.c 
HFILES=globals.h view.h aliens.h ufo.h player.h nInvaders.h 
OFILES=globals.o view.o aliens.o ufo.o player.o nInvaders.o 
all:   nInvaders 

nInvaders:  $(OFILES) $(HFILES) 
       $(CC) $(LDFLAGS) [email protected] $(OFILES) $(LIBS) 

.c.o: 
       $(CC) -c -I. $(CFLAGS) $(OPTIONS) $< 
clean: 
       rm -f nInvaders $(OFILES) 

최종 결과 :

[email protected]:~/ninvaders-0.1.1# file nInvaders_IOSXE_MIPS 
nInvaders_IOSXE_MIPS: ELF 32-bit MSB executable, MIPS, 
MIPS32 rel2 version 1, statically linked, for GNU/Linux 2.6.16, not stripped 

스크린 샷 :
http://imgur.com/a/kf8cu
https://www.youtube.com/watch?v=-qbmKYQ2jCA