其實從很早我就想深入學習linux,但時間有限,並且linux門檻挺高,不是很容易上手。最近由於隧道專案中用到嵌入式linux(arm cpu上的linux),並且提供硬體的單位針對linux的程式設計收費很高,並且時間很長,所以猶豫再三,決定開始深入學習linux,並在學習過程中完成預定的任務。
沒有想到,在嵌入式linux上執行乙個最簡單的「hello liunx」程式就費了很大的周折,不過功夫不負有心人,經過幾天的艱難跋涉,總算成功了,下面我把我的歷程說一下,給後來人有個參考。
要想在嵌入式linux執行程式,需要有下面幾個問題解決:
1、 需要乙個基於arm的gcc交叉編譯器;
2、 需要windows與vpc上的linux進行互動,以便交換檔案;
3、 嵌入式linux系統需要和vpc上的linux系統或windows系統進行互動,以便互動檔案;
第乙個問題,相對比較容易解決,直接和中間廠商要來了cross-2.95.3.tar.bz2 安裝包,這是一款基於arm平台上的交叉編輯器。直接解壓到任意目錄即可。
第二個問題,有些棘手,查了若干資料,終於找到可行的辦法。
1、 在windows xp建乙個共享資料夾,如「share」
2、 虛擬機器執行起來後,在linux命令列方式輸入:smbmount //ip位址或計算機名/共享資料夾名 掛載點
3、 ok,連線成功。
第三個問題,原想著很容易,卻沒有想到是最難的,中間廠商的辦法如下:
採用目標板掛載nfs目錄的方式進行開發
主機:nfs伺服器
1、 修改配置檔案etc/exports,如
/nfs/rootfs 192.168.0.x(rw,sync,no_root_squash) //具體含義略
2、 配置其為所有使用者可讀,chmod 644 /etc/exports
3、 讓nfs伺服器重新載入 etc/exports, /etc/init.d/nfs reload
4、 檢查防火牆,不要遮蔽相應埠
目標板:核心需要支援nfs
1、enable:
file systems à
network file systems à
nfs file system support
provide nfsv3 client support
配置完後,重新編譯核心
2、目標板啟動後,mount –t nfs 192.168.0.y:/nfs/rootfs/mnt –o nolock
按上面一步步做了,目標板提示rpc什麼錯誤之類,上網查資料,用servers指令開啟服務,很可惜,目標板不支援servers指令。
最後發現目標板支援ftp伺服器,總數找到乙個救命稻草,不過很可惜,使用者密碼未知,問了中間廠商,使用者和密碼仍然錯誤,最後打了n次**,告訴可以在目標板上新增新使用者,然後再登入ftp。
很恐怖的是,書本上教的useradd竟然沒有,後來檢視目標板bin上的檔案,原來是adduser命令,新增上使用者,果然可以登入了。不過linux上的ftp客戶端不好使,windows自帶的也不行,只好下了個flashfxp軟體,還可以。
在虛擬機器的liunx系統編寫如下程式:
#include
int main(int argc,char **ar**)
編寫makefile檔案
all:tt
tt: test.c
/usr/local/arm/2.95.3/bin/arm-linux-gcc -o tt test.c
clean:
-rm -rf tt
在命令列執行make指令,生成tt檔案
把tt檔案通過ftp客戶端拷貝到目標板上。
開始直接輸入[root@()]$tt 沒有反應,查資料,發現原來要這樣(如下),為什麼?暫時不知道!
[root@()]$ ./tt ,竟然有錯誤提示,提示內容如下:-sh:./tt:permission denied
上網查資料說是許可權不夠,需要執行如下指令:chmode 777 tt
執行後,竟然告訴我,沒有這個命令,最後發現原來是 chmod(看來指令的名稱都被中間廠商修改了)。
執行chmod 777 tt 後,在去執行 ./tt ^^#$^#$@ ok ---成功了!
後記:linux的使用習慣與windows有很大的區別,linux聯網需要啟用網絡卡才能工作,執行檔案需要 ./***格式,並且有許可權的使用者才能執行,類似的小問題,對乙個linux菜鳥來說,真是乙個又乙個的攔路虎,不過到現在總算接近門檻了,對我來說,後面的路還很長,困難才剛剛開始 … … :-(
嵌入式Linux程式設計 我的第一次艱難跋涉
2007年09月17日 16 55 00 其實從很早我就想深入學習 linux 但時間有限,並且 linux 門檻挺高,不是很容易上手。最近由於隧道專案中用到嵌入式 linux arm cpu 上的linux 並且提供硬體的單位針對 linux 的程式設計收費很高,並且時間很長,所以猶豫再三,決定開...
第一次嵌入式C 學習
資料 乘法 2 二進位制下的移位 例如 m 1 m 2 m n m 2 n 4 0 0 1 0 0 8 0 1 0 0 0 第一位與符號變數有關 除法 m n m 2 n int a a n unsigned int a a n a 0 0 遮蔽,遮蔽低八位 a 1 1 取出,取出高八位 清0器 a...
嵌入式C學習第一次任務
位運算 用於對整數型別 int,char,long 等 變數的二進位制形式的 某一位 bit 或者若干位進行操作。按位與 按位或 按位異或 按位取反 左移 左邊消失,右邊補0 右移 右邊消失,左邊補符號位 位運算的運算元是整數型別或字元型.1.將參與運算的兩運算元各對應的二進位制位進行與 操作,只有...