簡體   English   中英

#ifdef KERNEL2x和file_operations(..,..,..,..),ssize_t函數,printk()

[英]#ifdef KERNEL2x & file_operations(..,..,..,..) , ssize_t function,printk()

嗨,我有幾個問題。 如果有人會回答我,我會很高興:)我正在嘗試為LCD 16X2模塊編譯linux驅動程序。 我試圖在我的代碼中使用struct file_operations(); 1.通過其他代碼,我注意到它們添加了#ifdef KERNEL21進行編譯。 我試圖做到這一點,而我得到的錯誤卻少得多。 為什么以這種方式工作。 即時通訊使用內核2.6.18-128.4.1.el5 ..我是否需要更改為#ifdef KERNEL26? 如果嘗試這樣做,我會收到更多錯誤。

2.一些file_operation參數是rtuen ssize_t函數。 這是什么意思? 在其他代碼示例中,也存在“ #ifdef KERNEL21”,但仍然出現錯誤:“ lcd_module.c:74:錯誤:預期的標識符或ג(גג{ג令牌之前的“”

3.最后一個問題,我處理了一個Makfile示例,但得到的是.o文件,而不是可以用來工作的.ko文件。 如何使用.o文件運行模塊?

提前謝謝:)

ssize_t是一個帶符號的size_t並在內核中得到廣泛使用,因為小於零的值用於在預期無符號大小的地方返回錯誤。 例如,預計read文件操作將返回讀取的字節數,但是如果內存不足,則可以返回-ENOMEM並且將在用戶空間程序中適當errno

對於2.6內核,應該使用kernel-headers包中的Makefile而不是手工制作的文件,它會生成.ko文件而不是.o文件。 在此處進一步閱讀: http : //www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM