標籤:linux驅動ide linux 驅動 交叉編譯 嵌入式 eclipse makefile
開發環境:
ubuntu12.04(64位)
eclipse (c/c++)luna
注意:本文主要講將eclipse配置好編譯器。 遠端偵錯的部分請看另一篇文章 eclipse 調試環境配置。
我的arm-linux-gcc 路徑是:/opt/EmbedSky/4.3.3/bin/arm-linux-gcc (什嗎?怎麼看arm-linux-gcc的路徑?? 你可以使用 which arm-linux-gcc 來察看)
我的linux 核心路徑是:/opt/EmbedSky/linux-2.6.30.4
step1:
安裝eclipse以及jdk的配置、交叉編譯器的配置,這部分請看eclipse(c/c++)luna安裝。
step2:
0、這一步假設你已經能正常開啟eclipse arm-linux-gcc已經配置好。
1、開啟eclipse,最好將工作空間設為nfs,以便你的板子掛載它。(nfs配置方法請看這個nfs掛載方法)。
開啟後:
我已經建了個工程。你第一次開啟肯定不是這樣的。
2、建立一個工程: file->new->c project.
3、輸入工程名稱。
選擇 Empty Project cross GCC。 finish就可以,具體配置我們等會再來配置。
step3:
下面讓我們配置一番。
0、主要包括:取消makefile自動產生,配置編譯器arm-linux-gcc,配置路徑和符號。
1、取消eclipse自動產生 makefile :將General Makefile automatically的對勾去掉。 ok
3、配置編譯環境:
在左側項目欄右擊項目名稱 ->選擇properties,在c/c++build-->setting裡,把toolsetting中的command都改成arm-linux-gcc,arm-linux-gcc和arm-linux-as一共改這三個。
4、配置路徑和符號:
選擇 gun C ,點擊右側add 添arm-linux-gcc的一些標頭檔:
我的是:
/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include
/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed
/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/include
/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include
添加的時候別忘了選擇(打鉤):add to all configurations。
我們儲存下配置: 點擊下面的 export setting。 格式是xml檔案,名字隨便,位置隨便,它是一個非常隨便的檔案 哈哈。
配置還沒結束,這樣的配置顯然是不夠的,我們乾脆在xml檔案中配置好了。
5、開啟你儲存的xml檔案,我們來編輯他。用gedit開啟就行。
在第一個
<language name="C Source File">
</language>
之間添入核心樹的標頭檔的路徑(include路徑)。我的是:
<includepath>/opt/EmbedSky/linux-2.6.30.4/include</includepath>
<includepath>/opt/EmbedSky/linux-2.6.30.4/arch/arm/include</includepath>
<includepath>/opt/EmbedSky/linux-2.6.30.4/arch/arm/plat-s3c24xx/include</includepath>
注意格式。欲知詳情,請學習 xml。這樣核心樹路徑的問題就解決了,這裡我想順便提醒一句,你的核心編譯過嗎? 沒編譯過是不行的,編譯驅動程式的時候會提示一個檔案打死都找不到,趕緊make一遍吧!
6、找到 autoconf.h 我們需要這裡面的宏定義,將這些宏放在symbols裡面。具體做法:
我的autoconf.h檔案在 /opt/EmbedSky/linux-2.6.30.4/include/linux 目錄下。如果咱倆的版本不一樣 請自己grep一下。
進到這個目錄下,然後執行一下命令:
cat autoconf.h |grep define |awk ‘{print "<macro><name>" $2 "</name><value>" $3 "</value></macro>"}‘ > symbol.xml
這個命令的作用是將autoconf.h 檔案裡的宏 全部存放到 symbol.xml這個檔案中。沒成功??不可能吧,使用sudo試試
開啟這個symbol.xml檔案,複製檔案中所有的文字 粘貼到 我們剛才從eclipse匯出來的設定檔中(也是xml檔案)。粘貼到的位置是:
第二個
<language name="C Source File">
</language>
的中間。
並在<language name="C Source File"> 下面手動加一條:
<macro><name>__KERNEL__</name><value>1</value></macro>
預覽一下吧:
step5:
好了,設定檔總算弄完了,儲存一下。 我們再開啟eclipse的 gun c的那個配置介面,點擊import setting按鈕,將這個xml檔案導進來。以後我們再建工程時直接匯入這個設定檔就好了。
linux 驅動開發IDE就這樣的打造好了。 寫個教程不容易,轉載請標註出處。http://blog.csdn.net/tianzhihen_wq
簡單實驗一下。 匯入一個 .c檔案和makefile
給你個例子:
#include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n");} module_init(hello_init); module_exit(hello_exit);
ARCH=arm CROSS_COMPILE=arm-linux- obj-m := hello.o KDIR :=/opt/EmbedSky/linux-2.6.30.4 PWD :=$(shell pwd) all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: $(MAKE) -C $(KDIR) M=$(PWD) clean
makefile需要根據你linux核心位置選擇一下。 還有一點,由於我們是使用自己的makefile,編譯的時候eclipse預設從工程目錄下的Debug目錄編譯,這個位置可以從eclipse的
pwd 路徑 選擇,
好多配置,我相信過5天后讓我從頭開始配置的時候肯定又忘了。。。所以轉一份我的博文吧,轉載請標註出處。http://blog.csdn.net/tianzhihen_wq
這寫都配置完了,build一下吧,看看debug目錄下有沒有 .ko檔案。 祝你成功!。
配置eclipse linux嵌入式 整合式開發環境(編譯部分)詳細