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中 文件 -> 打开:

Linux学习开发环境及交叉编译链的搭建_第1张图片

找到我们解压后的目录,选择lucker.vmx镜像文件即可:

 

Linux学习开发环境及交叉编译链的搭建_第2张图片

然后点击”开启此虚拟机”:

Linux学习开发环境及交叉编译链的搭建_第3张图片

我们装的是服务器版本Ubuntu所以没有带花里胡哨的界面:

Linux学习开发环境及交叉编译链的搭建_第4张图片

Linux学习开发环境及交叉编译链的搭建_第5张图片

账户:lucker    密码:lucker123

Linux学习开发环境及交叉编译链的搭建_第6张图片

从虚拟机到物理机的切换可以按快捷键:”Ctrl+Alt”。

  1. Samba网络服务

Samba网络服务可以用来做Windows和Linux间的文件共享,我们搭建的ubuntu server中已经配置好了Samba文件共享,只需要找到ubuntu server的ip地址即可访问。

通过命令ifconfig可以查询ubuntu server的ip地址:

Linux学习开发环境及交叉编译链的搭建_第7张图片

然后在Windows上可以快捷键:”Win+r”在弹出的对话框中输入:

Linux学习开发环境及交叉编译链的搭建_第8张图片

账号:lucker   密码:lucker123

输入账户密码后即可进入Ubuntu server的共享目录:

Linux学习开发环境及交叉编译链的搭建_第9张图片

 

该目录对应Ubuntu server的 /home/lucker/share

1.3​​​​​​​ SSH网络服务

SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议,借助SSH我们可以远程登录到Ubuntu Server,也可以多人协同进行开发,首先在server中开启ssh服务(/etc/init.d/ssh start),密码lucker123

Linux学习开发环境及交叉编译链的搭建_第10张图片

在“准备篇”中我们安装了Xshell,打开Xshell并建立SSH连接:

Linux学习开发环境及交叉编译链的搭建_第11张图片

输入基本信息,点击连接:

Linux学习开发环境及交叉编译链的搭建_第12张图片

输入用户名,并勾选“记住用户名”:

Linux学习开发环境及交叉编译链的搭建_第13张图片

勾选“记住密码”,并输入密码:lucker123,点击确定:

Linux学习开发环境及交叉编译链的搭建_第14张图片

登录成功:

Linux学习开发环境及交叉编译链的搭建_第15张图片

导入Ubuntu主题:

Linux学习开发环境及交叉编译链的搭建_第16张图片

选择Ubuntu Style:

Linux学习开发环境及交叉编译链的搭建_第17张图片

最终效果,优雅地访问Ubuntu server:

Linux学习开发环境及交叉编译链的搭建_第18张图片

还可以复制多个终端出来(在已打开终端右键,复制会话):

Linux学习开发环境及交叉编译链的搭建_第19张图片

​​​​​​​1.4  交叉编译链

所谓交叉编译,可以简单理解为在X86架构平台上(我们的电脑是X86架构)对源码(c/c++文件)进行编译,生成其他平台比如ARM,MIPS等的可执行程序过程;我们已经配置好交叉编译链的路径,可以直接使用。

在workspace下有个basics目录,我们把基础篇的程序放在该目录中:

Linux学习开发环境及交叉编译链的搭建_第20张图片

测试编译一个源文件:hello_world.cpp

Linux学习开发环境及交叉编译链的搭建_第21张图片

g++编译出来的可执行文件 test_hello_world 可以直接运行,通过命令file查看可以看出可执行文件是x84-64格式;再用aarch64-linux-gnu-g++重新编译得到test_hello_world,发现执行时提示“Exec format error”即格式错误,用file查看,是ARM aarch64格式,如果把这个可执行文件放到开发板上,是可以正常运行的(这可以理解为交叉编译):

Linux学习开发环境及交叉编译链的搭建_第22张图片

 

===================================================================================================================

这样整个开发环境及交叉编译链就搭建好啦!!如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648

欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!加油!!

Linux学习开发环境及交叉编译链的搭建_第23张图片

 

笔者基于嵌入式系统框架内容如下整理编辑:

Linux学习开发环境及交叉编译链的搭建_第24张图片

 

你可能感兴趣的:(linux,嵌入式)