Compiling

buildroot 編譯驅動

  • May 14, 2016

我正在使用 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:沒有這樣的文件或目錄

  1. 我應該如何配置驅動程序編譯?
  2. 有沒有其他方法可以為目標 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的介面,找到它。

引用自:https://unix.stackexchange.com/questions/97123