[완료] Cross Compile 환경 문제 입니다. 해결 방법이 없을까요?

nyxanox의 이미지

안녕하세요.
매번 질문만 하고 있는 리눅스 초보입니다.
이번엔 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으로 확인했습니다.
다른 컴퓨터에서는 제대로 컴파일이 되는 것을 확인 하였습니다. 따라서 소스에는 문제가 없는 듯 합니다.

왜 이럴까요? 답변 좀 부탁드립니다.

cwryu의 이미지

/usr/src 밑에 있는 커널을 x86으로 설정했으니, 컴파일은 arm으로 하는데 x86 플래그가 들어가서 그렇습니다.

make V=1

하면 커맨드라인이 보입니다.

gasiri의 이미지

아래의 내용으로 미루어 보아..
현재 컴파일 하고자 할때 참조한 Architecture랑 toolchain 에 사용하는 architecture 랑
달라서 발생하는 것 같습니다.
사용자 계정의 환경변수에 Architecture 가 다르게 정의 되었거나
아님 다른 어딘 가에서 toolchain 이랑 다른 architecture 가 정의되어서
컴파일시 참조되고 있는 듯합니다.
아무튼 Architecture 를 확인해보세요..

rror: unknown architecture `i586'
nyxanox의 이미지

안녕하세요. cwryu님, gasiri님 답변 감사합니다.

제가 한가지 빠트린 것이 있어서 제대로 make되지 않았습니다.

타겟 시스템의 커널을 컴파일 하지 않아서 발생된 문제였습니다.

커널 2.6.18을 컴파일하고 나니 제대로 동작하네요.

감사합니다.

Good luck, dandy kang!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.