很早之前我(作者)就想深入學(xué)習(xí)Linux,但時(shí)間有限,并且Linux門檻挺高,不是很容易上手。最近由于隧道項(xiàng)目中用到嵌入式Linux(Arm CPU上的Linux),并且提供硬件的單位針對(duì)Linux的編程收費(fèi)很高,并且時(shí)間很長,所以猶豫再三,決定開始深入學(xué)習(xí)Linux,并在學(xué)習(xí)過程中完成預(yù)定的任務(wù)。
沒有想到,在嵌入式Linux上運(yùn)行一個(gè)最簡單的“Hello Liunx”程序就費(fèi)了很大的周折,不過功夫不負(fù)有心人,經(jīng)過幾天的艱難跋涉,總算成功了,下面我把我的歷程說一下,給后來人有個(gè)參考。
要想在嵌入式Linux運(yùn)行程序,需要有下面幾個(gè)問題解決:
1、 需要一個(gè)基于Arm的gcc交叉編譯器;
2、 需要Windows與VPC上的Linux進(jìn)行交互,以便交換文件;
3、 嵌入式Linux系統(tǒng)需要和VPC上的Linux系統(tǒng)或Windows系統(tǒng)進(jìn)行交互,以便交互文件;
第一個(gè)問題,相對(duì)比較容易解決,直接和中間廠商要來了cross-2.95.3.tar.bz2 安裝包,這是一款基于Arm平臺(tái)上的交叉編輯器。直接解壓到任意目錄即可。
第二個(gè)問題,有些棘手,查了若干資料,終于找到可行的辦法。
1、 在Windows XP建一個(gè)共享文件夾,如“share”
2、 虛擬機(jī)運(yùn)行起來后,在Linux命令行方式輸入:smbmount //ip地址或計(jì)算機(jī)名/共享文件夾名 掛載點(diǎn)
3、 Ok,連接成功。
第三個(gè)問題,原想著很容易,卻沒有想到是最難的,中間廠商的辦法如下:
采用目標(biāo)板掛載NFS目錄的方式進(jìn)行開發(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指令開啟服務(wù),很可惜,目標(biāo)板不支持Servers指令。
最后發(fā)現(xiàn)目標(biāo)板支持FTP服務(wù)器,總數(shù)找到一個(gè)救命稻草,不過很可惜,用戶密碼未知,問了中間廠商,用戶和密碼仍然錯(cuò)誤,最后打了n次電話,告訴可以在目標(biāo)板上添加新用戶,然后再登錄FTP。
很恐怖的是,書本上教的useradd竟然沒有,后來查看目標(biāo)板bin上的文件,原來是adduser命令,添加上用戶,果然可以登錄了。不過linux上的FTP客戶端不好使,Windows自帶的也不行,只好下了個(gè)FlashFXP軟件,還可以。
在虛擬機(jī)的Liunx系統(tǒng)編寫如下程序:
#include
int main(int argc,char **argv)
{
printf("hello linux/n");
}
編寫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文件通過FTP客戶端拷貝到目標(biāo)板上。
開始直接輸入[root@()]$tt 沒有反應(yīng),查資料,發(fā)現(xiàn)原來要這樣(如下),為什么?暫時(shí)不知道!
[root@()]$ ./tt ,竟然有錯(cuò)誤提示,提示內(nèi)容如下:-sh:./tt:Permission denied
上網(wǎng)查資料說是權(quán)限不夠,需要運(yùn)行如下指令:chmode 777 tt
運(yùn)行后,竟然告訴我,沒有這個(gè)命令,最后發(fā)現(xiàn)原來是 chmod(看來指令的名稱都被中間廠商修改了)。
運(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í)行,類似的小問題,對(duì)一個(gè)linux菜鳥來說,真是一個(gè)又一個(gè)的攔路虎,不過到現(xiàn)在總算接近門檻了,對(duì)我來說,后面的路還很長,困難才剛剛開始 … …
-
嵌入式
+關(guān)注
關(guān)注
5140文章
19524瀏覽量
314753 -
Linux
+關(guān)注
關(guān)注
87文章
11456瀏覽量
212750
原文標(biāo)題:嵌入式Linux編程之旅,我的第一次艱難跋涉
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式Linux-Qt環(huán)境搭建 Qt程序運(yùn)行測(cè)試

【Rico Board試用體驗(yàn)】一個(gè)簡單嵌入式應(yīng)用程序的編譯與測(cè)試過程
在Linux上實(shí)現(xiàn)ARM嵌入式開發(fā)
創(chuàng)建一個(gè)簡單Hello World Linux應(yīng)用程序的過程
什么是嵌入式Linux?
嵌入式liunx開發(fā)技術(shù)詳解
嵌入式Linux應(yīng)用程序例程

python程序在嵌入式linux系統(tǒng)運(yùn)行。。

嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個(gè)嵌入式QT應(yīng)用程序

一個(gè)完整的嵌入式程序_從單片機(jī)工程師的角度看嵌入式Linux

【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到嵌入式Linux平臺(tái)運(yùn)行

評(píng)論