日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内核程序实现多文件的调用

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内核程序实现多文件的调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要實現這個功能,編程步驟和應用程序多文件的調用是一樣的,只是在這個基礎上,會顯示的將變量或者函數名進行導出,導出的宏如下:

EXPORT_SYMBOL(變量名或者函數名);

或者

EXPORT_SYMBOL_GPL(變量名或者函數名);

前者導出的變量或者函數能夠給任何一個內核程序調用后者導出的變量或者函數只能給那些遵循GPL協議的內核程序調用;

?

案例:編寫內核程序,掌握內核符號導出

實施步驟:

PC機執行:

1.mkdir?/opt/drivers/day02/3.0

2.cd?/opt/drivers/day02/3.0

3.vim?test.h?//函數的聲明

4.vim?test.c?//函數的定義

5.vim?helloworld.c?//函數的調用

6.vim?Makefile

??obj-m?+=?helloworld.o

??obj-m?+=?test.o

??或者

??obj-m?+=?helloworld.o?test.o

??結果:

??????test.c?->?test.ko

??????helloworld.c?->?helloworld.ko

7.make

8.cp?*.ko?/opt/rootfs/?

?

ARM板上執行:

加載模塊

insmod?test.ko

insmod?helloworld.ko

卸載模塊

rmmod?helloworld

rmmod?test

注意:加載卸載順序



第二種方法: 使用modprobe 加載?

modprobe命令使用步驟:

1.?進入內核源碼?cd?/opt/kernel

make?modules

2.?修改?Makefile,添加如下信息

install

make?-C?$(KDIR)?SUBDIRS=$(PWD)?modules_install?INSTALL_MOD_PATH=/opt/

#modules_install?表示安裝模塊,主要是產生modules.dep,

依賴關系文件,然后將.ko拷貝到extra目錄。

#INSTALL_MOD_PATH?表示安裝到那個目錄下

#一旦執行make?install?安裝模塊時,最后在/opt目錄生成一個lib目錄,

然后將lib目錄的內容拷貝到/opt/rootfs/lib

3.?make?//編譯模塊

4.?make?install?//安裝模塊

5.?cp?/opt/lib/*?/opt/rootfs/lib?-frd

6.?在開發板上進行加載:

modprobe?helloworld.ko?/modprobe?helloworld

#說明:?modprobe默認到/lib/modules/2.6.32.17-davinci1/下找以來文件modules.dep

根據依賴文件,決定先加載哪個模塊!模塊在/lib/modules/2.6.32.17-davinci1/extra

7.?卸載模塊

modprobe?-r?helloworld??

?

?

總結:?modprobe用于復雜的有依賴關系的模塊加載。且它的操作其實也不方便。

如果依賴關系簡單的話還是用EXPORT_SYSBOL?();

?

?




與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的内核程序实现多文件的调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。