嵌入式Linux编程--我的第一次艰难跋涉
其实从很早我就想深入学习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 <stdio.h> 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 在命令行运行Make指令,生成tt文件
把tt文件通过FTP客户端拷贝到目标板上. 开始直接输入[root@()]$tt 没有反应,查资料,发现原来要这样(如下),为什么?暂时不知道! [root@()]$ ./tt ,竟然有错误提示,提示内容如下:-sh:./tt:Permission denied 上网查资料说是权限不够,需要运行如下指令:chmode 777 tt 运行后,竟然告诉我,没有这个命令,发现原来是 chmod(看来指令的名称都被中间厂商修改了). 运行chmod 777 tt 后,在去运行 ./tt ^^#$^#$@&# OK ---成功了!
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |