2014-09-02 2 views
0

원래 2.6.18 이전 커널 용으로 작성된 Wind River v6 (wndrvr6)이라는 오래된 Linux USB 모듈을 RedHat 5로 되 살리려고합니다. kernel 버추얼 박스에서 제대로 작동하려면 Fedora 9에서 2.6.27을 사용하십시오.이 모듈을 제외한 모든 것이 정상적으로 작동합니다. 나는 2.6.27로 컴파일 얻을 수있는 소스 코드에 약 10 변경을,하지만 난 그것을로드하려고 할 때, 나는 리눅스 커널 2.6.27 용 골동품 모듈의 알 수없는 USB 기호

windrvr6

를 얻을 : 알 수없는 기호를
windrvr6 usb_alloc_urb : 알 수없는 기호 windrvr6
usb_free_urb : 알 수없는
windrvr6 usb_register_driver 알 수없는 기호 :
windrvr6 usb_clear_halt 알 수없는 기호 :
windrvr6 usb_submit_urb 알 수없는 기호 :
windrvr6 usb_set_interface 알 수없는 기호 :usb_deregister 알 수없는 기호 기호
windrvr6 usb_ifnum_to_if windrvr6 : 알 수없는 기호 usb_kill_urb

"depmod -a"를 실행했으며 "depmod -e"는 출력하지 않으므로 모든 기호를 고려해야합니다. 위의 기호는 많은 모듈에 나타납니다 (strings 명령 사용). 은/proc/kallsyms 라인 그렇게 이들 기호가 제공된다

ffffffff811efc29의 T의 usb_kill_urb

있다. 이 기호가없는 이유는 무엇입니까?

+0

usb_kill_urb는 EXPORT_SYMBOL_GPL()을 사용하여 내 보냅니다. windrvr6 드라이버의 라이센스는 무엇입니까? 이것이 링크 실패의 원인 일 수 있습니다. http://lxr.free-electrons.com/source/drivers/usb/core/urb.c?v=3.3#L615 –

+0

코드에 "\ windriver \ docs \ license"가 표시됩니다. txt "이지만, 자일링스는 소스와 함께 docs 디렉토리를 포함하지 않았다. 마지막으로 장치 드라이버를 작성하면 라이센스가 확인되지 않았습니다. 이 드라이버는 EXPORT_SYMBOL() 및 EXPORT_SYMBOL_NOVERS() 만 호출합니다. 근원에있는 허용에 대하여 약간 부호가있다, 그러나 모두 비슷하게 꼬이는 작은 매크로의 미로이다. – skewray

+0

2.6.x 이상의 커널에서는 EXPORT_SYMBOL_NOVERS()가 더 이상 작동하지 않는다고 생각합니다. 나는 modversioning과 함께 지난 6 개월 내에 비슷한 문제에 부딪쳤다. MODULE_LICENSE() 매크로를 사용하여 광고되는 모듈 라이센스 정책은 버전 관리는 고려하지 않지만 라이센스는 중요하지 않습니다. 설계 의도는 폐쇄 소스 드라이버가 GPL 라이센스가 부여 된 코드를 사용하지 못하게하는 것입니다. 커널의 일부로 드라이버를 빌드하는 옵션도 있습니다. 이것이 커널에서 어떻게 구현되는지에 대해서는 http://lxr.free-electrons.com/source/include/linux/export.h#L89를 참조하십시오. –

답변

0

Jungo에서 가장 최신 버전의 드라이버를 다운로드했는데, 잘 작성되었습니다. 소스 코드 파일을 바꿔 넣었지만 이전 설정의 & makefile 스크립트를 사용하면 문제가 반환됩니다. 문제는 모듈의 컴파일 또는 설치 문제로 인한 것입니다. 여하튼, 나는 지금 설치 한 운전사가있다.

관련 문제