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

2021-04-13 14:20:29 字數 3138 閱讀 6516

2023年09月17日 16:55:00

其實從很早我就想深入學習

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

命令列方式輸入:

**bmount //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 >stdio.h<

int main(int argc,char **argv)

編寫makefile

檔案all:tt

tt: test.c

/usr/local/arm/2.95.3/bin/arm-linux-gcc -ott 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程式設計 我的第一次艱難跋涉

其實從很早我就想深入學習linux,但時間有限,並且linux門檻挺高,不是很容易上手。最近由於隧道專案中用到嵌入式linux arm cpu上的linux 並且提供硬體的單位針對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.將參與運算的兩運算元各對應的二進位制位進行與 操作,只有...