如何使用eclipse進行嵌入式Linux的開發
如何使用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時選中安裝)
1. 安裝。其實很簡單,就是將下載的arm-linux-gcc-3.4.1.tar.bz2解壓到Linux根目錄即可(因為解壓后已經包含了/usr/local目錄,所以要解壓到根目錄),如下命令:
tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /
解壓后的目錄如下圖:
解壓后的目錄/usr/local/arm/3.4.1/
2. 設置環境變量。就是把交叉編譯器的路徑設置到系統環境變量里面去。
echo $PATH
查看現有的環境變量,顯示如下圖:
如果你只想臨時添加交叉編譯器的環境變量(注:臨時添加的系統重啟或注銷后又沒有了),只需在命令行輸入如下命令:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
添加后的環境變量如下圖:(多了一個/usr/local/arm/3.4.1/bin)
如果你想這個環境變量永久的添加到系統的環境變量中,則你只需把這個命令添加到/root/.bashrc文件的最后一行即可(這個文件是隱藏文件,你要在文件瀏覽器中單擊查看菜單,勾選顯示隱藏文件才能看到)
3. 測試建立的交叉編譯環境。新建一個c程序,文件名:test.c, 如下:
#include <stdio.h>
int main(void)
{
printf("Hellow world!\n");
return 0;
}
進行交叉編譯,如下:
arm-linux-gcc -o test test.c
將交叉編譯好的目標文件test下載到ARM開發板中并運行,如下:
./test
用集成開發工具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。
ubuntu上安裝arm交叉編譯環境arm-linux-gcc
首先下載 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