1. 程式人生 > >linux-3.1.4下的驅動模組 "Unknown symbol in module" 問題(by liukun321咕唧咕唧)

linux-3.1.4下的驅動模組 "Unknown symbol in module" 問題(by liukun321咕唧咕唧)

    在載入自己寫的3.1.4核心的adc驅動時,頻頻出現下面的錯誤提示,以前在2.6.29的核心上從未碰到:

[[email protected] drivers]# insmod /lib/modules/adc.ko
adc: module license 'unspecified' taints kernel.
Disabling lock debugging due to kernel taint
adc: Unknown symbol platform_get_irq (err 0)
adc: Unknown symbol platform_driver_register (err 0)
adc: Unknown symbol platform_get_resource (err 0)
insmod: cannot insert '/lib/modules/adc.ko': unknown symbol in module or invalid parameter

   對於經常寫驅動的大牛來說這可能根本不是問題,但是它卻困擾我一段時間。反覆查閱網上的資料,找到可以從以下幾點來解決這個問題,在此記錄:

這是linux kernel 2.6.26 之後版本的bug (詳細描述, 請看http://bugzilla.kernel.org/show_bug.cgi?id=12446)
並且這個bug不會被fix

解決辦法是把mod_a的Module.symvers放到mod_b的當前路徑,從而編譯mod_b,符號資訊會自動連線進去.
或者在mod_b的makefile中使用KBUILD_EXTRA_SYMBOLS指定mod_a的Module.symvers, 如:
KBUILD_EXTRA_SYMBOLS=/mod_a/Module.symvers

編譯mod_b時,搜尋Module.symvers的路徑是:
1, kernel source path, e.g. /usr/src/kernels/linux-2.6.28.10
2, makefile中M=所指定的路徑, 它等效於變數KBUILD_EXTMOD的值
3, 變數KBUILD_EXTRA_SYMBOLS的值

   我按照上面所敘述的對我的核心模組的Makefile 做了修改,在編譯命令那行加了“KBUILD_EXTRA_SYMBOLS=/linux-3.1.4/Module.symvers”引數,編譯問題仍沒解決。我想細心地朋友,也許發現了問題根本所在,adc: module license 'unspecified' taints kernel.
   對,主要問題就是沒有模組許可證宣告。而我在新增MODULE_LICENSE("GPL");  後問題解決了。

相關推薦

linux-3.1.4驅動模組 "Unknown symbol in module" 問題by liukun321

    在載入自己寫的3.1.4核心的adc驅動時,頻頻出現下面的錯誤提示,以前在2.6.29的核心上從未碰到: [[email protected] drivers]# insmod /lib/modules/adc.ko adc: module licens

insmod: error inserting './igb.ko': -1 Unknown symbol in module 的問題所在

編譯驅動的時候碰到了  insmod: error inserting './igb.ko': -1 Unknown symbol in module 的問題,在網上看了下,說是檢視 dmesg | tail 看輸出資訊中的Unknown symbol,載入上這些模組就好。

1.1 學習之初;1.2 約定;1.3 認識Linux1.4 創建虛擬機;1.5安裝centos7

安裝centos7給自己定個位:1. 定位:為更好地就業,不被社會淘汰,做一名合格的運維工程師2. 目標:半年左右學習完成基礎,之後跳槽運維工作,工作中多多積累經驗3. 工資:第一次奔著8k+起,一到兩年提升到15k-20k學習:1. 班主任每天安排的學習課程完成後,如果有空余時間精力再繼續預習新的課程,每天

5高通AP10.4開發者指南——WLAN1.5 WLAN驅動模組化的一些其他修改

1.5 WLAN驅動模組化的一些其他修改 從QCA_Networking_2016.SPF.4.0版本開始,OL和DA驅動相互獨立,並新建了一個UMAC模組,作為通用層,並獨立於OL和DA的模組。 因為DA驅動已經獨立於“UMAC+OL”驅動結構,所以將UM

linux 驅動模組編譯步驟

現在我來說明一下這個Makefile。請記住是大寫的Makefile而不是小寫的makefile; obj-m :這個變數是指定你要聲稱哪些模組模組的格式為 obj-m := <模組名>.omodules-objs :這個變數是說明聲稱模組modules需要的目標檔案 格式要求   <模組

linux驅動模組化編譯,動態載入以及解除安裝

Linux驅動模組化編譯、載入、解除安裝 2010-8-27 硬體平臺:OMAPL-138 軟體平臺:linux2.6.32 + Ubuntu 步驟:: 1、編寫first_driver_hello.c檔案,將其放在/linux2.6.32/drivers/char路徑下

Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

time module clip modules 搜索 set 版本信息 ace 發現 本周開發中遇到了一個項目無法發布的問題 網上搜索到http://www.cnblogs.com/chanedi/articles/2112477.html這位同行的博客,順利解決問題,

用for和while循環求e的值[e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n!]

主函數 int class urn log emp art print tracking /*編敲代碼,依據下面公式求e的值。要求用兩種方法計算: 1)for循環。計算前50項 2)while循環,直至最後一項的值小於10-4 e=1+1/1!+1/2!+1/

接口測試進階3-1數據驅動測試

ann 測試 system org ide vid imp 京東 測試數據 數據驅動 相同的測試腳本使用不用的測試數據執行,並完全分離了測試數據和測試行為。這樣的模式成為數據驅動 testNG實現數據驅動的兩個關鍵註解 @DataProvider @Parameters 在

求多項式 1 - 1/2 + 1/3 - 1/4 + ... 前n項的值

Problem Description 多項式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + … 現在請你求出該多項式的前n項的和。 Input 輸入資料由2行組成,首先是一個正整數m(m<100),表示測試例項的個數,第二行包含m個正整數

計算1/1-1/2+1/3-1/4+1/5+……+1/99-1/100的值

看到這個式子首先總結規律: 1.每一項都是分數 2.分子都為1,分母依次遞增至100 3.分母的奇數項為正,偶數項為負 思路: 1.定義一個sum 2.建立一個迴圈,再判斷是否是奇數,如果是奇數往sum上加,否則(偶數)往sum上減 3.列印sum 程式碼如下: #include <s

sp1.3-1.4 Neural Networks and Deep Learning

交叉熵定義了兩個概率分佈之間的距離,因為是概率分佈 所以又引入softmax變為概率的形式 相加還是1 3 shallow neural network   神經網路輸入層不算     上

《OpenCV3程式設計入門》——3.1.4 imread()函式

imread函式用於讀取檔案中的圖片到OpenCV中 格式為: Mat imread(const string& filename, int flags=1); Mat類是用於儲存影象yi即其他矩陣資料的資料結構。 引數說明:     1. 第一個

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules專案無法加入到tomcat

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules 無法加入到tomcat中 問題如下 1.在eclipse的workspace裡面找到該專案.sett

tomcat部署專案時 報錯Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules

Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules   解決方法: 找到檔案 .settings->org.eclipse.wst.common.

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules問題

一般來說,這種問題就是Web專案不能通過eclipse載入到伺服器上 解決辦法: 1.在eclipse的workspace裡面找到該專案 .settings 資料夾 2.編輯org.eclipse.wst.common.project.facet.core.xml

C語言——兩種方法計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

方法一:首先我們先觀察這個數學式子的規律,可以發現奇數項均為正數,偶數項均為負數。則我們可以利用條件語句if來判斷奇偶,最後分別對奇數項和偶數項求和。 原始碼: #include<stdio.h> #include<stdlib.h> int main() {

1、2、2、34、5這六個數字列印演算法

1、2、2、3、4、5這六個數字,用java寫一個main函式,打印出所有不同的排列, 如:512234、412345等.  要求:”4”不能在第三位,”3”與”5”不能相連。       private static boolean isVali

pow函式數學次方在c語言的用法,兩種編寫方法例項 計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

關於c語言裡面pow函式,下面借鑑了某位博主的一篇文章: 標頭檔案:#include <math.h> pow() 函式用來求 x 的 y 次冪(次方),x、y及函式值都是double型 ,其原型為:    double pow(double x, double y

Android Studio 3.1.4 報錯Failed to find style 'coordinatorLayoutStyle' in current theme

使用最新版的AS3.1.4安裝後 執行hello world程式,預覽報錯Failed to find style ‘coordinatorLayoutStyle’ in current theme。 如圖。 網上找了些方法,沒解決,然後去Google找了下,在stackoverflo