如何將內核靜態庫編譯連接到驅動程序中去【轉】

轉自:http://blog.csdn.net/ganjianfeng2003/article/details/8089551

如何將內核靜態庫編譯連接到驅動程序中去

2010-12-07 08:27?331人閱讀?評論(1)?收藏?舉報

http://blog.chinaunix.net/u2/61663/showart_2404744.html

?

?

剛上郵箱的時候發現一位網友向我詢問這個問題,同時發送了一個鏈接給我了。

上去一看,上面還留有我以前同樣的提問,看看時間,都幾年前在別人的帖子里面的提問了。貌似當時我遇到同樣問題的時候也是到處發帖回帖詢問來著的,問的地方有點多,要不是這位朋友給我鏈接,早不記得那個鏈接也有訪問過,呵呵。

?

不過再往下看了后才發現,這個問題依然沒有給出明確的回答,很多朋友給出的都是應用層庫的鏈接,這和期望的內核層的鏈接是不一樣的。

?

所以我把自己的一點理解寫出來,給后面的朋友參考,期望對后來的朋友有所幫助。

?

?

我覺得在驅動程序里面編譯鏈接內核靜態庫需要從三個方面注意:

1.???????首先保證你正確生成了內核庫文件,而非應用程序庫文件;

2.???????其次是除去靜態庫之外的驅動文件的正確性,包括內核庫函數的調用和頭文件的申明;

3.???????正確修改驅動的Makefile

這幾個方面都正確之后,就能正確地將內核庫編譯進指定的驅動中去。

?

?

下面詳細給出個最簡單的例子給大家參考,畢竟有代碼參考才是大家快速編程的王道。

代碼目錄結構如下:?

DriverEntry.c

?

Makefile

?

lib

myalib.c

myalib.c

Makefile

1.?????????內核靜態庫文件的生成

?

內核庫包含一個myalib.c和myalib.h文件,代碼如下:

//myalib.c

void test(void)

{

????printk("A lib test./n");

}

?

//myalib.h

void test(void);

?

# This is the Makefile for parse.

RM = rm -f

?

CCFLAGS = -c

ARFLAG??= -rc

?

CC = gcc

AR = ar

?

lib_OBJECTS??=??myalib.o

lib_SOURCE??=??myalib.c

?

LIB = libtest.a

?

libtest.a:$(lib_OBJECTS)

?????????(AR)(AR)(ARFLAG) -o?@@^

????????

(libOBJECTS):(libOBJECTS):(lib_SOURCE)

?????????(CC)(CC)(CCFLAGS) -o?@@^

?

clean:

?????????(RM)(RM)(lib_OBJECTS.o)

?????????(RM)(RM)(LIB)

?

在輸入終端下執行”make”命令即可生成正確的內核庫文件。










本文轉自張昺華-sky博客園博客,原文鏈接:http://www.cnblogs.com/sky-heaven/p/5710135.html,如需轉載請自行聯系原作者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2018-2019 20165226 Exp9 Web安全基礎

2018-2019 20165226 Exp9 Web安全基礎 目錄 一、實驗內容說明及基礎問題回答 二、實驗過程 Webgoat準備XSS攻擊 ① Phishing with XSS 跨站腳本釣魚攻擊② Stored XSS Attacks 存儲型XSS攻擊③ Reflected XSS Attacks 反射型XSS攻擊 CSRF攻擊 ① Cross Site Request Forgery(CS…

用 git 同步 Colab 與 Gitlab、Github 之間的文件

Colab 是谷歌提供的免費 Jupyter 服務,可使用 GPU。但由于每次的 VM (虛擬機)登出后所有文件都會連同VM被毀掉。如何將一個項目里的程序或數據同步到 Colab則往往比較麻煩。盡管谷歌盤也可以掛到 Colab 里用&#xff0…

keep-alive使用_如何使用Google Keep進行無憂筆記

keep-alive使用There are a lot of note-taking apps out there. Google Keep may not be as powerful as services like Evernote, but its value is in its simplicity. Let’s talk about how to make the most of it. 那里有很多筆記應用程序。 Google Keep可能不如Evernot…

ZedGraph在項目中的應用

ZedGraph在項目中的應用將數據庫數據提取出來,顯示成曲線圖(餅狀、柱狀或立體圖)是項目中最常見的需求。 網上搜索到的解決方法,大多歸為兩類,一種是利用ActiveX組件,另一種是使用.net框架自帶的畫圖的類。…

TCP/IP:IP多播選路

本節主要討論多播選路,是在整個互聯網上的多播,我們將討論mrouted程序的執行,該程序計算多播路由表,以及再網絡之間轉發多播數據包的內核函數。 多播輸出處理 這個和IGMP的輸出處理類似,主要要注意有環回的多播輸出和沒…

Leetcode#832. Flipping an Image(翻轉圖像)

題目描述 給定一個二進制矩陣 A,我們想先水平翻轉圖像,然后反轉圖像并返回結果。 水平翻轉圖片就是將圖片的每一行都進行翻轉,即逆序。例如,水平翻轉 [1, 1, 0] 的結果是 [0, 1, 1]。 反轉圖片的意思是圖片中的 0 全部被 1 替換&a…

數據安全 數據銷毀_如何安全銷毀敏感數據CD / DVD?

數據安全 數據銷毀You have a pile of DVDs with sensitive information on them and you need to safely and effectively dispose of them so no data recovery is possible. What’s the most safe and efficient way to get the job done? 您有一堆DVD,上面有敏…

cannot find -lunwind-x86_64

錯誤代碼:; }) libtool: install: /usr/bin/install -c .libs/libunwind.lai /usr/local/lib/libunwind.la libtool: install: warning: relinking libunwind-setjmp.la libtool: install: (cd /down/libunwind-1.0/src; /bin/sh /down/libunwind-1.0/libtool --…

動態切換父元素隱藏和顯示里面的子元素的動畫會再一次執行嗎?

代碼&#xff1a;完整代碼:<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> <style type"text/css"> *{ margin: 0; padding: 0; } .box{ background-color: #00B83F; } .flag{ position…

MAD huashi

name1 input("請輸入一個名字") name2 input("請輸入一個名詞") name3 input("請輸入一個形容詞") name4 input("請輸入一個名字") name5 input("請輸入一個名字") name6 input("請輸入一個長輩名字") name…

如何使用QuickConnect遠程訪問Synology NAS

Your Synology NAS includes a QuickConnect feature that lets you access its DiskStation Manager interface remotely. Here’s how to set it up. Synology NAS包含快速連接功能&#xff0c;可讓您遠程訪問其DiskStation Manager界面。 設置方法如下。 You were likely gr…

深入MySQL存儲引擎分析鎖和排序的原理

幾個問題 為什么不建議使用訂單號作為主鍵?為什么要在需要排序的字段上加索引?for update 的記錄不存在會導致鎖住全表?redolog 和 binlog 有什么區別?MySQL 如何回滾一條 sql ?char(50) 和 varchar(50) 效果是一樣的么?索引知識回顧 對于 MySQL 數據庫而言,數據是存儲在…

網絡編程介紹

1. 目標:編寫一個C/S架構的軟件 C/S: Client--------基于網絡----------Server B/S: Browser-------基于網絡----------Server2. 服務端需要遵循的原則: 1. 服務端與客戶端都需要有唯一的地址,但是服務端的地址必須固定/綁定 2. 對外一直提供服務,穩定運行 3. 服…

[Web開發] MySpace 發布開發接口

2007年風頭最盛的Web 2.0公司應該就是Facebook &#xff0c;其一炮走紅的絕招就是它的開發平臺。 開發者可以為Facebook 加入各種插件&#xff0c;豐富Facebook 。為了對抗 Facebook &#xff0c; 社交網站的老大Myspace 也推出了自己開發平臺 http://developer.myspace.com/c…

css段落縮進_如何縮進Google文檔中的段落

css段落縮進Indenting paragraphs in Google Docs requires access to the ruler, which you’ll only find in the full web version. The ruler is not present in the mobile apps. 在Google文檔中縮進段落需要訪問標尺&#xff0c;而標尺只能在完整的網絡版本中找到。 標尺…

卡包模板

$json_data array(); $json_data[request_id] date(YmdHis).mt_rand(10000,99999); $json_data[card_type] OUT_MEMBER_CARD; $json_data[biz_no_prefix] prex; $json_data[biz_no_suffix_len] 10; $json_data[write_off_type] qrcode; #qrcode: 二維碼 dqrcode: 動態二維…

暑假個人小結

今天。。。不&#xff0c;是昨天&#xff0c;聶老大讓我們寫暑期總結 其中有這么一個 &#xff08;300字啊。。。我得好好想想怎么編&#xff09; 嘛&#xff0c;在這寫點不敢交上去的內容吧。 7月總結 我收獲了什么 很多課件 兩個qq群 slay.one被人虐 聯盟無畏先鋒的號到了20級…

php-fpm with php-5.3.2 + APC

php-fpm 現在php官方內部已經出版本了&#xff0c;據說以后會出現在 php core 里&#xff0c;如果現在安裝的話&#xff0c;可以svn得到最新代碼,我搶先為快。 至于緩存&#xff0c;我用的facebook 試用的apc 測試了一段時間還很&#xff0c;滿意。wget ftp://ftp.csx.cam.ac.u…

kotlin 初始化數組

為什么80%的碼農都做不了架構師&#xff1f;>>> //初始化5個元素的數組&#xff0c;每個都為"0" val a:Array<String> Array(5, {"0"}) // val a:Array<String> Array(5, {"0"}) println(a.joinToString(separator &…

Tomcat - Tomcat安裝

Tomcat官網&#xff1a;http://tomcat.apache.org/ 準備&#xff1a;JAVA環境布置完成 一、Windows平臺 1. 版本選擇 1&#xff09; 進入官網 2&#xff09; 查看版本匹配 官網說明 https://tomcat.apache.org/whichversion.html 3&#xff09; 需要查看已安裝JAVA版本請打開終…