<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 編譯在arm板上運行的內核模塊

編譯在arm板上運行的內核模塊

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
前兩天被這個(gè)事情搞暈了,看視頻的時(shí)候感覺(jué)編譯一個(gè)內核模塊很簡(jiǎn)單的,就是修改makefile的兩個(gè)地方,但是自己一做就出現問(wèn)題了,因為我是自己自學(xué)的,身邊沒(méi)有可以指導的人,所以很多都要靠自己摸索了,我自己編譯的時(shí)候出現很多警告信息和錯誤,提示找不到頭文件,還有一些看不懂的信息,到處找資料,但是都沒(méi)有說(shuō)清楚,看了很久也沒(méi)看出什么對自己有用的東西,看的頭暈,準備放棄了,今天在學(xué)習的時(shí)候又去看結果看到一篇博文,才煥然大悟,makefile里面要改的源代碼路徑是移植到arm板上的linux源代碼,才突然想起來(lái),我自己改錯了,就是要把路徑指上你開(kāi)發(fā)板上運行的linux內核源代碼的頂層路徑,我是用的通過(guò)nfs啟動(dòng)系統的,是按照國嵌的視頻一步步做的,所以我的路徑在我的nfs所在的路徑。這些問(wèn)題對于一些學(xué)了很久的人來(lái)說(shuō)可能很低級,但是對于初學(xué)者來(lái)說(shuō)可能碰到后半天搞不好,所以寫(xiě)下來(lái)供參考。。。

下面是我自己找的一個(gè)小實(shí)驗:

本文引用地址:http://dyxdggzs.com/article/201611/319249.htm

#include
#include
MODULE_LICENSE("GPL");
MODULE_AUTHOR("David Xie");
MODULE_DESCRIPTION("Hello World Module");
MODULE_ALIAS("a simplest module");
static int __init hello_init()
{
printk(KERN_EMERG"Hello World!n");
return 0;
}
static void __exit hello_exit()
{
printk(KERN_EMERG "Goodbye Cruel World!n");
}
module_init(hello_init);
module_exit(hello_exit);
第一步是編譯,首先要做的是設置交叉編譯器,修改makefile,打開(kāi)makefile文件,如下:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /forlinux/kernel/linux-2.6.28
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
首先需要指定kernel的源代碼路徑:
我的是KDIR :=/opt/GTStudio/GT2440/opt/GTStudio/GT2440/linux-2.6.30.4/
這個(gè)路徑由自己決定,移植的arm平臺下的linux源代碼放在什么地方就填什么路徑,如果指定錯誤的話(huà),會(huì )提示找不到下面兩個(gè)文件的。
#include
#include

然后指定交叉編譯器,CROSS_COMPILE=arm-linux-(前提是你的arm-linux-gcc安裝到根目錄下了,而且修改了環(huán)境變量,否則需指定安裝路徑)
makefile主要修改這兩個(gè)地方就OK了,保存關(guān)閉。
在控制臺命令下,進(jìn)入hello.c目錄,make,可以看到hello.ko內核模塊生成了,將它拷貝到2440板上:
insmod hello.ko
可以看到hello world打印信息,但是在rmmod的時(shí)候,確無(wú)法卸載,需要在linux源碼目錄下,執行make prepare一下,修復bounds.h文件。
再rmmod hello



關(guān)鍵詞: 編譯arm板內核模

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>