在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 編譯在arm板上運(yùn)行的內(nèi)核模塊

            編譯在arm板上運(yùn)行的內(nèi)核模塊

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

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

            本文引用地址:http://www.biyoush.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);
            第一步是編譯,首先要做的是設(shè)置交叉編譯器,修改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平臺(tái)下的linux源代碼放在什么地方就填什么路徑,如果指定錯(cuò)誤的話,會(huì)提示找不到下面兩個(gè)文件的。
            #include
            #include

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



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

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉