嵌入式Linux程式設計 我的第一次艱難跋涉

2021-09-22 05:13:10 字數 2244 閱讀 4206

其實從很早我就想深入學習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.將參與運算的兩運算元各對應的二進位制位進行與 操作,只有...