디바이스 드라이버 컴파일 도중 에러.
안녕하세요~
다름이 아니라 제가 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 보드입니다. 컴파일러도 제공해준 컴파일러 사용하였습니다.
기존 보드는 회사에서 외주로 제작한 보드입니다.
어랫, 오브젝트
어랫, 오브젝트 파일로 컴파일만 해야 하는데 지금 링크까지 하려고 하는 것 아닌가요? 컴파일 명령 수행할 때도 "-c"가 빠져있고 말이죠.
Makefile에서 타겟 이름이 "logsys_fe1_gpio"가 아니라 "logsys_mnmux_gpio"로 되어야 하지 않을까요?:)
----
$PWD `date`
$PWD `date`
아~ 그렇군요 이런 바보짓을...
감사합니다.
Makefile 도 그대로 바꾸다가 그건 간과했네요.
감사합니다.
덕분에 컴파일 성공했습니다.
이제 동작이 제대로 되나 봐야겠네요.
댓글 달기