嵌入式第二天:第一个程序Hello,World
首先我们按过程一步步走一遍,当中包括了解决问题的思路,方法,而这也是学习中最重要的。最后我们总结今天用到一些命令以及遇到的一些注意点。
任务:在虚拟机下创建第一个程序helloworld,并实现电脑与开发板通信,将目标文件(编译好的文件)传送到开发版系统文件目录中,并运行成功。
分析:(思路)
要在linux下写程序然后编译,肯定要有编译器,要在虚拟机中安装编译器必然要实现windows和虚拟机的文件共享,通俗说就是要能传文件。实现这一步之后便要考虑文件怎么传送到开发板上,而且要注意在虚拟机下所运行的目标文件与在开发板上运行的文件是不完全相同的,前者用gcc –o [ ] [ ]命令生成,后者用arm-linux-gcc–o [] [] 命令生成。
总的来说,首先要实现文件共享,然后是具体的编程,编译,传送,运行。(文件共享具体在这里可以是直接把文件拖过去)
流程:
一.windows和虚拟机linux文件共享
解决办法:安装Vmware tools, 获得超级管理员权限(没有超级管理员权限是不能能实现文件互传的)
安装VMware tools
在VM9菜单栏中点击VM中的installVMware tools,稍后虚拟机linux中会弹出来一个目录,当中有VMware tools压缩包。接下来我们要把这个文件复制到FileSystem中的opt文件夹当中去,会发现右击copy但是不能粘贴,这是为什么呢?其实没有超级管理员权限是不能实现这一操作的,所以首先我们要获得超级管理员的权限,为了一进来就是超级管理员,我们进行如下操作:
获得管理员权限过程:
A . Ctrl+Alt+t打开终端,输入如下代码sudo passwd 创建密码
lihaowei@ubuntu:/root$ sudo passwd
[sudo] password for lihaowei:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updatedsuccessfully
B. 执行 gedit/etc/lightdm/lightdm.conf
C. 在打开的文件后添加
greeter-show-manual-login=true
allow-guest=false
完整的是:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false
保存后按Ctrl+C回到命令输入状态
D.重启linux在用户登陆界面输入root然后输入之前设置的密码作为超级管理员进入。
至此我们已经获得了超级管理员权限,现在可以粘贴了,下面我们在终端中解压拷贝至opt中的Vmware….安装压缩包。
命令输入:cd /opt
tar xzvf V(按Tab自动补齐)
如下
root@ubuntu:/opt# tar xzvf VMwareTools-9.2.0-799703.tar.gz
接下来在windows中把arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz拖到linux下的opt中
同样在终端解压这个文件,会发现在opt中套有一个opt文件夹,打开它把FriendlyARM文件夹拷出来,删掉这个opt.至此我们的opt中至此有三个东西,FriendlyARM文件夹,以及两个压缩文件。这样我们算基本安装了编译工具。要用它还要做一个如下工作:
在FileSystem中找到etc里的一个bash.bashrc,打开在最后添加:
exportPATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
检验是否安装成功:
输入:arm-linux-gcc -v
如果成功会打印出很多信息,如果提示command not found ,那就需要输入:
sourcebash.bashrc
然后再次检验。
至此我们可以开始在linux下编程并用刚才装的工具编译了。
创建第一个程序 HelloWorld
在FileSystemàroot—>Documents中右键新建文件,自己起名,后缀.c 我创的是Hello.C
打开,编写自己的第一个程序:
#include<stdio.h>
void main()
{
printf("Hello,World\n");
}
在Terminal中进入Documents路径,输入: gcc –v hello hello.c将hello.c编译成可执行文件。 输入 ./hello 即可运行了。
编译开发板执行的文件(hellojac):
arm-linux-gcc –v hellojac hello.c
注意虚拟机linux下运行的文件和开发板上要运行的文件是不同的,故有不同的编译命令了。
现在我们把hellojar拖到windows中,并利用Securecrt把这个文件传送到开发板上去
怎样连接我们已经在第一天中完成。
传送的两个命令:
接收 rz 发送 sz [文件名]
在Securecrt中输入rz后,选择刚才的文件
Cd 然后ls 可查看到目录中有hellojar
输入chmod 777hellojar //将hellojar文件权限提升至最高
输入./hellojar 便可运行程序了。
sz 命令可以将开发板中的文件传送到windows中来,(需要在securecrt的Transfer中设置好send xmoderm,receive xmoderm ,指明从哪传送到哪,接受至哪)
命令总结:
cd //进入目录
ls // 查看目录文件
tar xzvf //解压缩 x表示解压缩,z表示解压文件格式,v表示解压过程,f表示解压过程
cp // 复制
rm // 删除
gcc //编译 gcc 空格 –o 空格 生成文件名 空格 源文件名
chmod 777 文件名 //提升文件至最高权限
注意点:1.注意命令格式,不要少打或多加/ 之类的,该打空格的一定要打
2.建议别在关闭虚拟机之前直接叉掉VM
3.遇到问题要理清思路,多查,多交流