很早之前我(作者)就想深入學(xué)習(xí)Linux,但時(shí)間有限,并且Linux門(mén)檻挺高,不是很容易上手。最近由于隧道項(xiàng)目中用到嵌入式Linux(Arm CPU上的Linux),并且提供硬件的單位針對(duì)Linux的編程收費(fèi)很高,并且時(shí)間很長(zhǎng),所以猶豫再三,決定開(kāi)始深入學(xué)習(xí)Linux,并在學(xué)習(xí)過(guò)程中完成預(yù)定的任務(wù)。
沒(méi)有想到,在嵌入式Linux上運(yùn)行一個(gè)最簡(jiǎn)單的“Hello Liunx”程序就費(fèi)了很大的周折,不過(guò)功夫不負(fù)有心人,經(jīng)過(guò)幾天的艱難跋涉,總算成功了,下面我把我的歷程說(shuō)一下,給后來(lái)人有個(gè)參考。
要想在嵌入式Linux運(yùn)行程序,需要有下面幾個(gè)問(wèn)題解決:
1、 需要一個(gè)基于Arm的gcc交叉編譯器;
2、 需要Windows與VPC上的Linux進(jìn)行交互,以便交換文件;
3、 嵌入式Linux系統(tǒng)需要和VPC上的Linux系統(tǒng)或Windows系統(tǒng)進(jìn)行交互,以便交互文件;
第一個(gè)問(wèn)題,相對(duì)比較容易解決,直接和中間廠商要來(lái)了cross-2.95.3.tar.bz2 安裝包,這是一款基于Arm平臺(tái)上的交叉編輯器。直接解壓到任意目錄即可。
第二個(gè)問(wèn)題,有些棘手,查了若干資料,終于找到可行的辦法。
1、 在Windows XP建一個(gè)共享文件夾,如“share”
2、 虛擬機(jī)運(yùn)行起來(lái)后,在Linux命令行方式輸入:smbmount //ip地址或計(jì)算機(jī)名/共享文件夾名 掛載點(diǎn)
3、 Ok,連接成功。
第三個(gè)問(wèn)題,原想著很容易,卻沒(méi)有想到是最難的,中間廠商的辦法如下:
采用目標(biāo)板掛載NFS目錄的方式進(jìn)行開(kāi)發(fā)
主機(jī):NFS服務(wù)器
1、 修改配置文件etc/exports,如
/nfs/rootfs 192.168.0.X(rw,sync,no_root_squash) //具體含義略
2、 配置其為所有用戶可讀,chmod 644 /etc/exports
3、 讓NFS服務(wù)器重新載入 etc/exports, /etc/init.d/nfs reload
4、 檢查防火墻,不要屏蔽相應(yīng)端口
目標(biāo)板:內(nèi)核需要支持NFS
1、Enable:
File Systems à
Network File Systems à
NFS file system support
Provide NFSv3 client support
配置完后,重新編譯內(nèi)核
2、目標(biāo)板啟動(dòng)后,mount –t nfs 192.168.0.Y:/nfs/rootfs/mnt –o nolock
按上面一步步做了,目標(biāo)板提示RPC什么錯(cuò)誤之類,上網(wǎng)查資料,用Servers指令開(kāi)啟服務(wù),很可惜,目標(biāo)板不支持Servers指令。
最后發(fā)現(xiàn)目標(biāo)板支持FTP服務(wù)器,總數(shù)找到一個(gè)救命稻草,不過(guò)很可惜,用戶密碼未知,問(wèn)了中間廠商,用戶和密碼仍然錯(cuò)誤,最后打了n次電話,告訴可以在目標(biāo)板上添加新用戶,然后再登錄FTP。
很恐怖的是,書(shū)本上教的useradd竟然沒(méi)有,后來(lái)查看目標(biāo)板bin上的文件,原來(lái)是adduser命令,添加上用戶,果然可以登錄了。不過(guò)linux上的FTP客戶端不好使,Windows自帶的也不行,只好下了個(gè)FlashFXP軟件,還可以。
在虛擬機(jī)的Liunx系統(tǒng)編寫(xiě)如下程序:
#include
int main(int argc,char **argv)
{
printf("hello linux/n");
}
編寫(xiě)Makefile文件
all:tt
tt: test.c
/usr/local/arm/2.95.3/bin/arm-linux-gcc -o tt test.c
clean:
-rm -rf tt
在命令行運(yùn)行Make指令,生成tt文件
把tt文件通過(guò)FTP客戶端拷貝到目標(biāo)板上。
開(kāi)始直接輸入[root@()]$tt 沒(méi)有反應(yīng),查資料,發(fā)現(xiàn)原來(lái)要這樣(如下),為什么?暫時(shí)不知道!
[root@()]$ ./tt ,竟然有錯(cuò)誤提示,提示內(nèi)容如下:-sh:./tt:Permission denied
上網(wǎng)查資料說(shuō)是權(quán)限不夠,需要運(yùn)行如下指令:chmode 777 tt
運(yùn)行后,竟然告訴我,沒(méi)有這個(gè)命令,最后發(fā)現(xiàn)原來(lái)是 chmod(看來(lái)指令的名稱都被中間廠商修改了)。
運(yùn)行chmod 777 tt 后,在去運(yùn)行 ./tt ^^#$^#$@ OK ---成功了!
后記:linux的使用習(xí)慣與windows有很大的區(qū)別,linux聯(lián)網(wǎng)需要激活網(wǎng)卡才能工作,運(yùn)行文件需要 ./XXX格式,并且有權(quán)限的用戶才能執(zhí)行,類似的小問(wèn)題,對(duì)一個(gè)linux菜鳥(niǎo)來(lái)說(shuō),真是一個(gè)又一個(gè)的攔路虎,不過(guò)到現(xiàn)在總算接近門(mén)檻了,對(duì)我來(lái)說(shuō),后面的路還很長(zhǎng),困難才剛剛開(kāi)始 … …
-
嵌入式
+關(guān)注
關(guān)注
5052文章
18909瀏覽量
300732 -
Linux
+關(guān)注
關(guān)注
87文章
11161瀏覽量
208462
原文標(biāo)題:嵌入式Linux編程之旅,我的第一次艱難跋涉
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論