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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

动态加载和静态加载及其编译步骤

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态加载和静态加载及其编译步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在類unix操作系統中,驅動加載方式一般分為:動態加載和靜態加載,下面分別對其詳細論述。
一、動態加載
動態加載是將驅動模塊加載到內核中,而不能放入/lib/modules/下。
??? 2.4內核中,加載驅動命令為:insmod ,刪除模塊為:rmmod
??? 2.6以上內核中,除了insmodrmmod外,加載命令還有modprobe
??? insmodmodprobe不同之處:
??? insmod 絕對路徑/××.o,而modprobe ××即可,不用加.ko.o后綴,也不用加路徑;最重要的一點是:modprobe同時會加載當前模塊所依賴的其它模塊;
??? lsmod查看當前加載到內核中的所有驅動模塊,同時提供其它一些信息,比如其它模塊是否在使用另一個模塊。
二、靜態加載
(一)概念
??? 在執行make menuconfig命令進行內核配置裁剪時,在窗口中可以選擇是否編譯入內核,還是放入/lib/modules/下相應內核版本目錄中,還是不選。
(二)操作步驟
??? linux設備一般分為:字符設備、塊設備和網絡設備,每種設備在內核源代碼目錄樹drivers/下都有對應的目錄,其加載方法類似,以下以字符設備靜態加載為例,假設驅動程序源代碼名為ledc.c,具體操作步驟如下:
??? 第一步:將ledc.c源程序放入內核源碼drivers/char/下;
??? 第二步:修改drivers/char/Config.in文件,具體修改如下:
?? ?? ?? 按照打開文件中的格式添加即可;
?? ?? ?? 在文件的適當位置(這個位置隨便都可以,但這個位置決定其在make menuconfig窗口中所在位置)加入以下任一段代碼:
?? ?? ??
?? ?? ?? tristate 'LedDriver' CONFIG_LEDC
?? ?? ?? if [ "$CONFIG_LEDC" = "y" ];then
?? ?? ?? bool '?? Support for led on h9200 board' CONFIG_LEDC_CONSOLE
?? ?? ?? fi
?? ?? ??
說明:以上代碼使用tristate來定義一個宏,表示此驅動可以直接編譯至內核(用*選擇),也可以編制至/lib/modules/下(用M選擇), 或者不編譯(不選)。

?? ?? ?? bool 'LedDriver' CONFIG_LEDC
?? ?? ?? if [ "$CONFIG_LEDC" = "y" ];then
?? ?? ?? bool '?? Support for led on h9200 board' CONFIG_LEDC_CONSOLE
?? ?? ?? fi
?? ?? ??
說明:以上代碼使用tristate來定義一個宏,表示此驅動只能直接編譯至內核(用*選擇)或者不編譯(不選),不能編制至/lib/modules/ 下(用M選擇)。
???
???
第三步:修改drivers/char/Makefile文件
?? ?? ?? 在適當位置加入下面一行代碼:
?? ?? ?? obj-$(CONFIG_LEDC)?? +=?? ledc.o
?? ?? ??
或者在obj-y一行中加入ledc.o,如:
?? ?? ?? obj-y += ledc.o mem.o 后面不變;

??? OK,經過以上的設置就可以在執行make menuconfig命令后的窗口中的character devices---> 中進行選擇配置了。選擇后重新編譯就ok了。

總結

以上是生活随笔為你收集整理的动态加载和静态加载及其编译步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

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