配置eclipse linux嵌入式 整合式開發環境(編譯部分)詳細

來源:互聯網
上載者:User

標籤: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嵌入式 整合式開發環境(編譯部分)詳細

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.