빌드루트 컴파일 드라이버

빌드루트 컴파일 드라이버

저는 Buildroot를 사용하여 임베디드 Linux를 컴파일하고 있습니다. 대상 Makefile을 구성했기 때문에 제대로 작동하지만 이제 USB 장치용 드라이버가 필요합니다. 나는 buildroots를 사용하여 Linux를 대상으로 호스트 Linux에서 Qt appilactions(c++)를 컴파일했습니다 /output/host/usr/bin/arm-none-linux-gnueabi-c++. 좋은 결과.

이제 c 파일을 컴파일하려고합니다.이 드라이버.

나는 그것을 이렇게 부른다:

/output/host/usr/bin/arm-none-linux-gnueabi-gcc -Wall -D__KERNEL__ -DMODULE -I/home/buildroot-2012.08/output/build/linux-2.6.35.3/include -DMODVERSIONS -include /home/buildroot-2012.08/output/build/linux-2.6.35.3/include/config/modversions.h -I /home/buildroot-2012.08/output/build/linux-2.6.35.3/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c

오류가 발생합니다.

출력 /build/linux-2.6.35.3/include/linux/linkage.h:5: 치명적인 오류: asm/linkage.h: 해당 파일 또는 디렉터리가 없습니다.

  1. 드라이버 컴파일을 어떻게 구성해야 합니까?
  2. 대상 Linux에서 이 작업을 수행할 수 있는 다른 방법이 있습니까? 어쩌면 내가 이 일을 제대로 하고 있지 않을 수도 있습니다.

답변1

asm/대상 아키텍처에 대한 심볼릭 링크입니다. 존재하지 않는 경우 커널 빌드 디렉터리에 일부 대상이 누락된 것일 수 있습니다 configure(존재하지 않는 경우 module_headers수행할 수 있음).

명령줄, 사용자 정의 Makefile 또는 Buildroot 패키지(사용 중인 Buildroot 버전)를 사용하고 있는지 질문에서 명확하지 않습니다.

명령줄에서 커널 모듈( 버전 2.4까지, 2.6부터 시작하는 커널 모듈의 확장 ) .o대신 C 객체를 빌드하고 있습니다..o.ko

커널 모듈 빌드, 빌드 및 로그의 자세한 정도를 높이는지 확실하지 않은 경우 동일한 플래그를 사용하십시오.

커널에는 자신만의 방식이 있습니다빌딩 블록그리고 Buildroot는 패키지와 관련하여 최선의 방법은 아마도 모듈을 빌드하기 위한 새 패키지를 생성하는 것입니다(그리고 모듈을 빌드하는 데 사용할 다른 패키지가 이미 있는지 확인).

이 예조금 오래되었지만 도움이 될 수도 있습니다.

편집하다

모듈이 ftdi_sio.ko디렉토리에 생성됩니다./lib/modules/$(uname -r)/kernel/drivers/usb/serial/

builtin.ko그러나 기호를 생성하거나 확인 하지 않도록 구성할 수도 있습니다.USB_SERIAL_FTDI_SIO당신의구성y( 내장 모듈 이어야 함 m)

/proc내장되었거나 플러그인된 경우 런타임 대상에 다음과 같은 인터페이스가 있어야 합니다.ftdi_sio, 그것을 찾아라.

관련 정보