如何使用eclipse進行嵌入式Linux的開發
如何使用eclipse進行嵌入式Linux的開發 習慣了在windows環境下開發的程式員在轉到Linux平台時經常會抱怨沒有一個好用的內建開發環境。和windows下常用的一些開發軟體相比,Linux自帶的一些開發環境使用起來要麼界面和操作不夠友善、友好,要麼功能不全。其實我們完全可以在開源社群上找到操作友善,功能強大的開發環境。下面就向大家介紹一個能在Linux上運作,界面和功能與windows上同類軟體相似的開發平台eclipse。
eclipse是著名的跨平台的內建開發環境(IDE),最初是由IBM公司開發的替代商業軟體Visual Age For Jave的下一代開發環境。2001年,IBM将eclipse貢獻給開源社群,現在由eclipse基金會管理。2005年7月,eclipse穩定版3.1.0釋出,目前最新的穩定版本是3.4。
eclipse本身隻是一個架構平台,最初主要用于java語言的開發。但是衆多插件的支援使得eclipse同樣可以用來開發其他的語言,如c/c++、c#、perl、cobol的等等。cdt(c/c++ development toolkit)就是支援c/c++開發的插件。許多軟體開發商也以eclipse為架構推出了自己的內建開發環境。由于eclipse平台用java實作,是以運作時需要jre(java runtime environment)的支援。下面我們以ubuntu(linux發行版的一種)為例,介紹如何在linux上使用 eclipse+cdt來進行嵌入式Linux應用程式的開發。
一、安裝軟體
在ubuntu下安裝軟體有兩種方法:使用apt-get來自動安裝或手動安裝。使用者使用自動安裝非常友善,适合初學者。但是安裝過程過于依賴資源網站的連接配接狀況,可能需要耗費過多的時間。這裡我們推薦手動安裝的方式,花的時間比較短。
1、安裝jdk
jdk(java development kit)即java開發包,其中包含了運作eclipse所需要的jre. ubuntu預設安裝的gnu版本的jre運作效率不高,是以我們需要安裝sun公司的jre. 首先從sun的網站上(http://java.sun.com/javase/downloads/index.jsp)下載下傳安裝包jdk-6u7-linux-i586.bin,然後如下進行安裝:
# mkdir -p /opt/java
# ./jdk-6u7-linux-i586.bin // 執行自解壓檔案,生成目錄
# mv jdk1.6.0_07 /opt/java // 把目錄移到/opt/java下
# cd /opt/java
# ln -s jdk1.6.0_07 jdk
# mv /etc/alternatives/java /etc/alternatives/java.gnu
# ln -s /opt/java/jdk/bin/java /etc/alternatives/java
# export JAVA_HOME=/opt/java/jdk // 設定環境變量
2、安裝eclipse和cdt
從eclipse網站上(http://www.eclipse.org/)下載下傳安裝包eclipse-SDK-3.4-linux-gtk.tar.gz 和cdt-master-5.0.0.zip
# cd /opt
# tar zxvf eclipse-SDK-3.4-linux-gtk.tar.gz // 解壓生成eclipse目錄
# export PATH=/opt/eclipse:$PATH
# mkdir -p /opt/cdt
# cd /opt/cdt
# unzip cdt-master-5.0.0.zip
# cp -r plugins/* /opt/eclipse/plugins/
# cp -r features/* /opt/eclipse/features/
二、建立c/c++工程
假設我們已經在linux上安裝好了arm交叉工具鍊,下面介紹如何建立、交叉編譯和調試c/c++工程。為了更直覺的說明,我們截取了相關的圖檔:
進入eclipse安裝路徑後,運作eclipse

eclipse運作界面
建立c 工程
使用預設的Linux GCC工具鍊
進入c/c++ 界面
添加源代碼檔案1
添加源代碼檔案2
編輯代碼
設定工程屬性,指定交叉工具鍊1
設定工程屬性,指定交叉工具鍊2
設定工程屬性,指定交叉工具鍊3
編譯工程
已生成arm平台可執行代碼
配置調試選項
設定Debugger和 GDB debugger選項
設定連接配接類型為TCP,目标闆的ip位址和調試端口号。端口号任意指定,通常大于1024(避免和系統所用端口号沖突)
在開發闆上運作程式,格式如上圖所示:gdbserver是交叉調試輔助程式;192.168.0.150是主機的ip位址;1234是調試端口号,和eclipse調試選項裡設定的端口号要一緻
點選Debug,進入調試界面
執行到斷點
eclipse的調試界面和操作和在windows下開發類似,相信到了這一步,大家已經可以很友善來進行應用程式的開發了。
所需開發工具及環境
虛拟機Linux:Fedora 9
交叉編譯工具:arm-linux-gcc-3.4.1.tar.bz2
內建開發工具:Eclipse(Linux安裝包中自帶的,安裝Linux時選中安裝)
安裝ARM交叉編譯器
1. 安裝。其實很簡單,就是将下載下傳的arm-linux-gcc-3.4.1.tar.bz2解壓到Linux根目錄即可(因為解壓後已經包含了/usr/local目錄,是以要解壓到根目錄),如下指令:
<code>tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /</code>
解壓後的目錄如下圖:
解壓後的目錄/usr/local/arm/3.4.1/
2. 設定環境變量。就是把交叉編譯器的路徑設定到系統環境變量裡面去。
<code>echo $PATH</code>
檢視現有的環境變量,顯示如下圖:
如果你隻想臨時添加交叉編譯器的環境變量(注:臨時添加的系統重新開機或登出後又沒有了),隻需在指令行輸入如下指令:
<code>export PATH=$PATH:/usr/local/arm/3.4.1/bin</code>
添加後的環境變量如下圖:(多了一個/usr/local/arm/3.4.1/bin)
如果你想這個環境變量永久的添加到系統的環境變量中,則你隻需把這個指令添加到/root/.bashrc檔案的最後一行即可(這個檔案是隐藏檔案,你要在檔案浏覽器中單擊檢視菜單,勾選顯示隐藏檔案才能看到)
3. 測試建立的交叉編譯環境。建立一個c程式,檔案名:test.c, 如下:
<code>#include <stdio.h> int main(void) { printf("Hellow world!\n"); return 0; }</code>
進行交叉編譯,如下:
<code>arm-linux-gcc -o test test.c</code>
将交叉編譯好的目标檔案test下載下傳到ARM開發闆中并運作,如下:
<code>./test</code>
輸出結果為:
Hellow world!
用內建開發工具Eclipse來開發嵌入式應用程式
輕按兩下Eclipse圖示啟動Eclipse
設定Eclipse的工作空間,就是選個目錄,單擊OK
啟動後的主界面
開始建立一個應用程式工程
選擇建立一個C工程,單擊Next
給工程取個名字,這裡我就叫test_app;然後選擇工程類型,我選擇了個Hellow world C工程模版,單擊Next
填寫作者、版權等資訊,單擊Next
沒什麼選的,點選Finish
單擊Yes
建立好的項目工程
展開左邊的源代碼目錄,輕按兩下打開主函數。這裡隻是輸出一句"Hello World!!!",你可以做一些其他複雜的應用
單擊Project菜單,去掉Build Automatically的勾選,因為勾選的話,每次修改一個地方工程都會自動進行編譯
打開工程的屬性對話框進行編譯選項的設定
我們的應用程式最終要到嵌入式arm上運作,這裡就要把gcc改成arm-linux-gcc編譯器,當然前提是你要在你的開發主機上先安裝arm-linux-gcc
C連接配接器也要改成arm-linux-gcc
這裡的Libraries是設定你的應用程式中用到的庫檔案,比如應用程式中用到了線程類,則這裡在上面添加pthread這個庫,下面就添加這個庫的路徑。如果應用程式沒用到任何庫檔案就不用管了
選中左側的工程名,右鍵,在彈出的菜單中選擇Build Project編譯工程
編譯好後的工程,目标檔案在Debug目錄下
結束語
建立交叉編譯環境是開發嵌入式程式的第一步,編譯器版本也有很多,這裡就介紹用的較多的一種。而Eclipse則是本人認為開發嵌入式應用程式最為友善的內建開發工具,他不僅讓整個工程清晰可見,更重要的是他不需要你去為整個工程編寫複雜的Makefile檔案,他會為你自動生成Makefile。
首先下載下傳 arm-linux-gcc-4.3.2.tgz,這個就不多說了,重點介紹一下怎麼安裝。将 arm-linux-gcc-4.3.2.tgz 檔案拷貝到 Ubuntu 的主檔案夾下,在 Ubuntu 中建立一個終端,以root使用者運作,輸入下面的指令安裝交叉編譯器:
#tar zxvf arm-linux-gcc-4.3.2.tgz
解壓後會産usr檔案夾,将這個目錄下的usr/local/arm的arm檔案夾複制到檔案系統的usr/local目錄下,指令為
#mv usr/local/arm usr/local
然後把交叉編譯器路徑添加到系統環境變量中,
在終端中執行:
gedit /etc/profile
添加以下四行到該檔案中:
export PATH=/usr/local/arm/4.3.2/bin:$PATH
export TOOLCHAIN=/usr/local/arm/4.3.2
export TB_CC_PREFIX=arm-linux-
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi