buildroot 編譯驅動
我正在使用 Buildroot 來編譯嵌入式 linux。它執行良好,因為我有目標 Makefile 配置,但現在我需要我的 USB 設備的驅動程序。我設法通過使用 buildroots 在我的主機 linux 上編譯 Qt appilactions(c++) 以定位 linux
/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
我收到錯誤:
output/build/linux-2.6.35.3/include/linux/linkage.h:5:致命錯誤:asm/linkage.h:沒有這樣的文件或目錄
- 我應該如何配置驅動程序編譯?
- 有沒有其他方法可以為目標 linux 做到這一點。Mayby 我的做法不對。
asm/
是指向您的目標架構的符號連結,如果它不存在,則可能您的核心建構目錄中缺少一些目標,configure
(如果沒有,也許module_headers
可以做到)從您的問題中不清楚您是使用命令行、自定義 Makefile 還是 Buildroot 包(您使用的是哪個版本的 Buildroot)。
您的命令行正在建構一個 C 對象
.o
而不是核心模組(.o
在 2.4 版之前是核心模組的擴展,從 2.6 開始.ko
)如果您不確定這些標誌會增加核心模組建構、建構和日誌的詳細程度,請使用相同的標誌。
核心有自己的方式來建構模組,而 Buildroot 有自己的方式來建構模組,最好的可能是創建一個新的包來建構你的模組(看看是否已經有其他建構模組的包)。
這個例子有點老了,但也許有幫助。
編輯
模組
ftdi_sio.ko
生成到目錄/lib/modules/$(uname -r)/kernel/drivers/usb/serial/
但它也可以配置為
builtin
,因此不會.ko
生成,請檢查您的配置中的符號USB_SERIAL_FTDI_SIO(應該是內置的模組)。y``m
/proc
如果它是內置的或插入的,則在執行時目標上應該有一個名為ftdi_sio的介面,找到它。