디바이스 드라이버 컴파일 도중 에러.

jesusace의 이미지

안녕하세요~

다름이 아니라 제가 EP7312 프로세서에서 PXA255 프로세서로 교체하는 과정에서 디바이스 드라이버
변경을 하고자 하는데 컴파일 도중 에러가 나서 질문올립니다.

일단 프로세서 변경은 위와 같이 되고
사용하는 GPIO 핀도 바뀌었습니다.

그래서 레지스터 값을 컨트롤 해서 기존 디바이스 드라이버를 수정해서
PXA255에 맞는 디바이스 드라이버를 만들려고 합니다.

그런데 컴파일 도중 에러가 나서 막혔네요.
에러 메세지를 올려보겠습니다.

=================================================
[root@localhost pxa255_MNMUX_GPIO_DRV]# make
/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gcc -D__KERNEL__ -DMODULE -I/usr/local/hybus-arm-linux-R1.1/kernel/2.4.18-rmk7-pxa1-xhyper255/include -march=armv4 -mtune=arm7tdmi -Wall logsys_mnmux_gpio.c -o logsys_mnmux_gpio
/usr/local/hybus-arm-linux-R1.1/arm-linux/lib/crt1.o: In function `_start':
/usr/local/hybus-arm-linux-R1.1/arm-linux/lib/crt1.o(.text+0x2c): undefined reference to `main'
/tmp/ccTs6P7e.o: In function `aco_interrupt':
/tmp/ccTs6P7e.o(.text+0xa8): undefined reference to `disable_irq'
/tmp/ccTs6P7e.o: In function `initPwrBootingmodeAco':
/tmp/ccTs6P7e.o(.text+0x148): undefined reference to `request_irq'
/tmp/ccTs6P7e.o(.text+0x160): undefined reference to `printk'
/tmp/ccTs6P7e.o: In function `cleanupPwrBootingmodeAco':
/tmp/ccTs6P7e.o(.text+0x19c): undefined reference to `free_irq'
/tmp/ccTs6P7e.o: In function `getRTCTime':
/tmp/ccTs6P7e.o(.text+0x4c8): undefined reference to `jiffies'
/tmp/ccTs6P7e.o: In function `fe1_gpio_ioctl':
/tmp/ccTs6P7e.o(.text+0xf78): undefined reference to `enable_irq'
/tmp/ccTs6P7e.o(.text+0x10a8): undefined reference to `__memzero'
/tmp/ccTs6P7e.o(.text+0x1254): undefined reference to `do_settimeofday'
/tmp/ccTs6P7e.o(.text+0x1424): undefined reference to `printk'
/tmp/ccTs6P7e.o: In function `fe1_gpio_open':
/tmp/ccTs6P7e.o(.text+0x14a0): undefined reference to `__this_module'
/tmp/ccTs6P7e.o(.text+0x14a4): undefined reference to `__this_module'
/tmp/ccTs6P7e.o: In function `fe1_gpio_release':
/tmp/ccTs6P7e.o(.text+0x14e8): undefined reference to `__this_module'
/tmp/ccTs6P7e.o(.text+0x14ec): undefined reference to `__this_module'
/tmp/ccTs6P7e.o: In function `init_module':
/tmp/ccTs6P7e.o(.text+0x1508): undefined reference to `misc_register'
/tmp/ccTs6P7e.o(.text+0x1524): undefined reference to `printk'
/tmp/ccTs6P7e.o(.text+0x1574): undefined reference to `printk'
/tmp/ccTs6P7e.o: In function `cleanup_module':
/tmp/ccTs6P7e.o(.text+0x15a4): undefined reference to `printk'
/tmp/ccTs6P7e.o(.text+0x15ac): undefined reference to `misc_deregister'
/tmp/ccTs6P7e.o: In function `copy_from_user':
/tmp/ccTs6P7e.o(.text+0x17ac): undefined reference to `__arch_copy_from_user'
/tmp/ccTs6P7e.o(.text+0x17cc): undefined reference to `__memzero'
/tmp/ccTs6P7e.o: In function `copy_to_user':
/tmp/ccTs6P7e.o(.text+0x183c): undefined reference to `__arch_copy_to_user'
/tmp/ccTs6P7e.o(.data+0x0): undefined reference to `__this_module'
collect2: ld returned 1 exit status
make: *** [logsys_mnmux_gpio] 오류 1
[root@localhost pxa255_MNMUX_GPIO_DRV]#

==============================================================
위와 같구요.

Makefile 은 다음과 같습니다.

=====================================================

INCLUDE = /usr/local/hybus-arm-linux-R1.1/kernel/2.4.18-rmk7-pxa1-xhyper255/include
CC=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gcc
STRIP=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-strip

CFLAGS = -D__KERNEL__ -DMODULE -I$(INCLUDE) -march=armv4 -mtune=arm7tdmi -Wall

all: logsys_mnmux_gpio

logsys_fe1_gpio: logsys_mnmux_gpio.c
$(CC) -c $(CFLAGS) logsys_mnmux_gpio.c

clean:
rm -rf *.o logsys_mnmux_gpio

====================================================

이런 경우 유추 해볼 수 있는 원인은 대충 무엇인지 고수님들께 자문 요청합니다.
감사합니다.

P.S : 새로운 보드는 하이버스 Xhyper-PXA255A 보드입니다. 컴파일러도 제공해준 컴파일러 사용하였습니다.
기존 보드는 회사에서 외주로 제작한 보드입니다.

wariua의 이미지

어랫, 오브젝트 파일로 컴파일만 해야 하는데 지금 링크까지 하려고 하는 것 아닌가요? 컴파일 명령 수행할 때도 "-c"가 빠져있고 말이죠.

Makefile에서 타겟 이름이 "logsys_fe1_gpio"가 아니라 "logsys_mnmux_gpio"로 되어야 하지 않을까요?:)

logsys_mnmux_gpio: logsys_mnmux_gpio.c
        $(CC) -c $(CFLAGS) logsys_mnmux_gpio.c

----
$PWD `date`

$PWD `date`

jesusace의 이미지

감사합니다.

Makefile 도 그대로 바꾸다가 그건 간과했네요.
감사합니다.

덕분에 컴파일 성공했습니다.
이제 동작이 제대로 되나 봐야겠네요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.