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.將參與運算的兩運算元各對應的二進位制位進行與 操作,只有...