[완료] Cross Compile 환경 문제 입니다. 해결 방법이 없을까요?
글쓴이: nyxanox / 작성시간: 목, 2009/09/24 - 6:53오후
안녕하세요.
매번 질문만 하고 있는 리눅스 초보입니다.
이번엔 Cross Compile 환경 문제 때문에 고생하고 있습니다.
우선 제가 수행한 일은...
(1) toolchain을 /opt/toochain에 설치
(2) 타겟 리눅스 커널 버전 2.6.18을 /usr/src/linux에 설치
(3) Makefile을 아래와 같이 작성
CROSS_COMPILE = /opt/toolchain/bin/arm-linux- CC = $(CROSS_COMPILE)gcc MODULE_OBJS = test.o EXTRA_CFLAGS += -DEXPORT_SYMTAB PWD = $(shell pwd) MODULE = test KDIR = /usr/src/linux obj-m := $(MODULE_OBJS) default: make -C $(KDIR) M=$(PWD) modules $(MODULE).o: $(MODULE_OBJS) $(LD) $(LD_RFLAG) -r -o $@ $(MODULE_OBJS) clean: make -C $(KDIR) M=$(PWD) clean
(4) make하여 컴파일
위와 같은 과정대로 수행했고... 다음과 같은 에러를 만날 수 있었습니다.
root@desktop:~/test# make make -C /usr/src/linux M=/root/test modules make[1]: Entering directory `/usr/src/linux-2.6.28.10' CC [M] /root/test/test.o cc1: error: invalid option `32' cc1: error: invalid option `regparm=3' cc1: error: invalid option `preferred-stack-boundary=2' cc1: error: invalid option `no-sse' cc1: error: invalid option `no-mmx' cc1: error: invalid option `no-sse2' cc1: error: invalid option `no-3dnow' /root/test/test.c:1: error: bad value (i686) for -mtune= switch /root/test/test.c:1: error: bad value (i586) for -march= switch Assembler messages: Error: unknown architecture `i586' Error: unrecognized option -march=i586 make[2]: *** [/root/test/test.o] Error 1 make[1]: *** [_module_/root/test] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.28.10' make: *** [default] Error 2
*참고사항: toolchain이 제대로 설정된 것은 gcc --version으로 확인했습니다.
다른 컴퓨터에서는 제대로 컴파일이 되는 것을 확인 하였습니다. 따라서 소스에는 문제가 없는 듯 합니다.
왜 이럴까요? 답변 좀 부탁드립니다.
Forums:
/usr/src 밑에 있는
/usr/src 밑에 있는 커널을 x86으로 설정했으니, 컴파일은 arm으로 하는데 x86 플래그가 들어가서 그렇습니다.
make V=1
하면 커맨드라인이 보입니다.
아래의 내용으로 미루어 보아
아래의 내용으로 미루어 보아..
현재 컴파일 하고자 할때 참조한 Architecture랑 toolchain 에 사용하는 architecture 랑
달라서 발생하는 것 같습니다.
사용자 계정의 환경변수에 Architecture 가 다르게 정의 되었거나
아님 다른 어딘 가에서 toolchain 이랑 다른 architecture 가 정의되어서
컴파일시 참조되고 있는 듯합니다.
아무튼 Architecture 를 확인해보세요..
커널 컴파일이 문제 였습니다. 해결 되었습니다.
안녕하세요. cwryu님, gasiri님 답변 감사합니다.
제가 한가지 빠트린 것이 있어서 제대로 make되지 않았습니다.
타겟 시스템의 커널을 컴파일 하지 않아서 발생된 문제였습니다.
커널 2.6.18을 컴파일하고 나니 제대로 동작하네요.
감사합니다.
Good luck, dandy kang!
댓글 달기