日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          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://yuyingmama.com.cn/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)閉