嵌入式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時選中安裝)
安裝ARM交叉編譯器
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
輸出結果為:
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。
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
㈡ 嵌入式linux系統開發的具體步驟_嵌入式linux系統的搭建流程和要點
第一步、建立交叉編譯環境
沒有交叉開發經驗的讀者,可能一時很難接受這個概念。首先,要明白兩個概念:一般我們工作的機器,稱為開發機、主機;我們製作好的系統將要放到某台機器,如手機或另一台PC機,這台機我們稱為目標主機。
我們一般開發機上已經有一套開發工具,我們稱之為原生開發套件,我們一般就是用它們來寫程序,那麼,那什麼又是交叉編譯環境呢?其實一點也不神秘,也就是在開發岩困機上再安裝一套開發工具,這套開發工具編譯出來的程序,如內核、系統工作或者我們自己的程序,是放在目標主機上運行的。
那麼或許有初學者會問,直接用原生開發工具為目標主機編譯程序不就完了?至少我當初是這么想的。此棗絕一般來說,我們的開發機都是X86平台,原生開發套件開發的工具,也針對X86平台,而我們的目標主機可能是PowerPC、IXP、MIPS所以,我們的交叉編譯環境是針對某一類具體平台的。
一般來講,交叉開發環境需要二進制工具程序、編譯器、C鏈接庫,嵌入式開發常用的
這三類軟體是:BinutilsGuClibc
當然,GNU包含的工具套件不僅於此,你還要以根據實際需要,進行選擇
第二步、編譯內核
開發工具是針對某一類硬體平台,內核同樣也是。這一步,我們需要用第一步中建立的工具,對內核進行編譯,對於有內核編譯經驗的人來說,這是非常簡單的;
第三步、建立根文件系統
也就是建立我們平常看到的bin、dev、proc這一大堆目錄,以及一些必備的文件;
另外,我們還需要為我們的目標系統安裝一些常用的工具軟體,如ls、ifconfig當然,一個辦法是找到這些工具的源代碼,用第一步建立的交叉編譯工具來編譯,但是這些軟體一是森姿數量多,二是某些體積較大,不適合嵌入式系統,這一步,我們一般都是用busybox來完成的,包括系統引導軟體init;
最後,我們為系統還需要建立初始化的引導文件,如inittab
㈢ linux平台嵌入式開發環境搭建
EABI_4.3.3_EmbedSky_20090812.tar.bz2:支持eabi的arm toolchain,也就是編譯器工具鏈。
linux-2.6.30.4_20090826.tar.bz2 :linux內核源碼包,可以根據你的板子進行配置內核,run在你的板子上。
root_qtopia_2.2.0_2.6.30.4_20090829.tar.bz2 :文件系統目錄。
u-boot-1.1.6_20090824.tar.bz2 :uboot,bootloader代碼。
zlib-1.2.3.tar.gz:一個庫文件,正規的做法不應該把它放在這邊,我估計他們已經把這個zlib編譯好了,放到toolchain裡面去了,這里只不過給你個源碼而已。
一個嵌入式系統包括:
bootloader,也就是你的uboot
linux kernel,就是你的linux-2.6.30.4_20090826.tar.bz2
文件系統,也就是你的root_qtopia_2.2.0_2.6.30.4_20090829.tar.bz2
應用程序:你這里沒有,就是一些應用程序demo,測試code之類的。
所有的程序都應該用你的toolchain編譯,也就是用EABI_4.3.3_EmbedSky_20090812.tar.bz2。