Linux学习开发环境及交叉编译链的搭建
1、嵌入式Linux c/c++的开发基本是基于原厂的BSP或者开源项目比如OpenWrt之类的Linux分支开展的,和在服务器(x86)上的开发模式有非常大的差异,本章我们会尽最大可能还原实际企业开发的环境,让大家提高学习和开发的效率:A.了解Linux开发服务器和开发终端的关系B.了解及使用Samba网络服务
C.了解及使用SSH网络服务
D.掌握交叉编译的过程
开发服务器的搭建
1.1VMware导入开发服务器
一般企业都会有自己的服务器,而服务器系统一般都是基于Linux,我们使用虚拟机VMware来模拟一台服务器(有条件也可以在物理机上搭建服务器),服务器系统采用ubuntu-20.04 64位,安装过程比较费时间(我们会在另外的篇幅详细介绍安装过程),这里提供一个已经安装好的镜像:…\tutorials\附加资料\1. 软件工具\ubuntu_server.zip解压后我们打开VMware,导入该镜像即可完成开发服务器的搭建。在VMware中 文件 -> 打开:https://img-blog.csdnimg.cn/20201102215805402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==找到我们解压后的目录,选择lucker.vmx镜像文件即可:
https://img-blog.csdnimg.cn/20201102215928564.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==然后点击”开启此虚拟机”:https://img-blog.csdnimg.cn/20201102215955432.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==我们装的是服务器版本Ubuntu所以没有带花里胡哨的界面:https://img-blog.csdnimg.cn/2020110222002280.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==https://img-blog.csdnimg.cn/20201102220033871.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==账户:lucker 密码:lucker123https://img-blog.csdnimg.cn/20201102220053847.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==从虚拟机到物理机的切换可以按快捷键:”Ctrl+Alt”。
[*]2 Samba网络服务
Samba网络服务可以用来做Windows和Linux间的文件共享,我们搭建的ubuntu server中已经配置好了Samba文件共享,只需要找到ubuntu server的ip地址即可访问。通过命令ifconfig可以查询ubuntu server的ip地址:https://img-blog.csdnimg.cn/20201102220411204.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==然后在Windows上可以快捷键:”Win+r”在弹出的对话框中输入:https://img-blog.csdnimg.cn/2020110222043278.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==账号:lucker 密码:lucker123输入账户密码后即可进入Ubuntu server的共享目录:https://img-blog.csdnimg.cn/20201102220521852.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
该目录对应Ubuntu server的 /home/lucker/sharehttps://img-blog.csdnimg.cn/20201102220529737.pngdata:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==1.3 SSH网络服务SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议,借助SSH我们可以远程登录到Ubuntu Server,也可以多人协同进行开发,首先在server中开启ssh服务(/etc/init.d/ssh start),密码lucker123:https://img-blog.csdnimg.cn/2020110222062344.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==在“准备篇”中我们安装了Xshell,打开Xshell并建立SSH连接:https://img-blog.csdnimg.cn/20201102220641251.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==输入基本信息,点击连接:https://img-blog.csdnimg.cn/20201102220700968.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==输入用户名,并勾选“记住用户名”:https://img-blog.csdnimg.cn/20201102220719665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==勾选“记住密码”,并输入密码:lucker123,点击确定:https://img-blog.csdnimg.cn/20201102220741200.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==登录成功:https://img-blog.csdnimg.cn/20201102220759804.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==导入Ubuntu主题:https://img-blog.csdnimg.cn/20201102220816585.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==选择Ubuntu Style:https://img-blog.csdnimg.cn/20201102220834641.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==最终效果,优雅地访问Ubuntu server:https://img-blog.csdnimg.cn/20201102220852970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==还可以复制多个终端出来(在已打开终端右键,复制会话):https://img-blog.csdnimg.cn/20201102220909154.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==1.4交叉编译链所谓交叉编译,可以简单理解为在X86架构平台上(我们的电脑是X86架构)对源码(c/c++文件)进行编译,生成其他平台比如ARM,MIPS等的可执行程序过程;我们已经配置好交叉编译链的路径,可以直接使用。在workspace下有个basics目录,我们把基础篇的程序放在该目录中:https://img-blog.csdnimg.cn/2020110222100848.pngdata:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==测试编译一个源文件:hello_world.cpphttps://img-blog.csdnimg.cn/2020110222102125.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hvbWVCeXRl,size_16,color_FFFFFF,t_70data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==g++编译出来的可执行文件 test_hello_world 可以直接运行,通过命令file查看可以看出可执行文件是x84-64格式;再用aarch64-linux-gnu-g++重新编译得到test_hello_world,发现执行时提示“Exec format error”即格式错误,用file查看,是ARM aarch64格式,如果把这个可执行文件放到开发板上,是可以正常运行的(这可以理解为交叉编译):https://img-blog.csdnimg.cn/20201102221040832.pngdata:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
===================================================================================================================这样整个开发环境及交叉编译链就搭建好啦!!如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!加油!!https://img-blog.csdnimg.cn/20201102221356801.jpgdata:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
页:
[1]