<Linux开发> linux开发工具-之-交叉编译环境搭建

<Linux开发> linux开发工具-之-交叉编译环境搭建

一、搭建ubuntu下的FTP服务器


打开ubuntu终端输入以下命令安装FTP服务:

sudo apt-get install vsftpd

<Linux开发> linux开发工具-之-交叉编译环境搭建_第1张图片
修改FTP配置:
使用 VI 命令打开/etc/vsftpd.conf

sudo vi /etc/vsftpd.conf

并修改完为以下内容:

# Uncomment this to allow local users to log in.
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES

保存退出vi编译,重启FTP服务,命令:

sudo /etc/init.d/vsftpd restart

在这里插入图片描述

重启完成后即可使用FTP 客户端连接。

二、搭建ubuntu下的NFS 服务

使用如下命令安装 NFS 服务:

sudo apt-get install nfs-kernel-server rpcbind

等待安装完成后,我们需要设置一个nfs的共享目录,笔者将“/home/water/imax/nfs”目录作为nfs的共享目录。
首先新建该目录:

mkdir -p /home/water/imax/nfs

配置 nfs,使用如下命令打开 nfs 配置文件/etc/exports:

sudo vi /etc/exports

打开/etc/exports 以后在后面添加如下所示内容:

/home/water/imax/nfs *(rw,sync,no_root_squash)

该路径读者根据自己的实际路径设置即可。
<Linux开发> linux开发工具-之-交叉编译环境搭建_第2张图片
保存修改后重启NFS服务,命令如下:

sudo /etc/init.d/nfs-kernel-server restart

在这里插入图片描述

三、搭建ubuntu下的 SSH 服务

开启 Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu,比如使用 SecureCRT登录ubuntu,Ubuntu 下使用如下命令安装 SSH 服务:

sudo apt-get install openssh-server

<Linux开发> linux开发工具-之-交叉编译环境搭建_第3张图片
上述命令安装 ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。

四、搭建ubuntu下的 交叉编译工具链

1、初识 交叉编译工具链


我们平常写代码都是在PC电脑上编写的,但是写完的代码是编译得到的可执行文件 是要放到Linux板子上运行的,而不是在pc上运行。那么如果使用PC自带的编译工具编译出来的执行文件则是在PC上运行的,这样就不可以在linux板子上运行了。
所以我们要达到的目的是,在pc上编写代码,且要在pc上编译代码,编译得到的执行文件却要能在linux板子上运行。那么就诞生出了交叉编译工具链。

Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:
1、它肯定是一个 GCC 编译器。
2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯片上运行的。

交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。

交叉编译器有很多种,我们使用 Linaro 出品的交叉编译器,Linaro 是一间非营利性质的开放源代码软件工程公司,Linaro 开发了很多软件,最著名的就是 Linaro GCC 编译工具链(编译器),关于 Linaro 详细的介绍可以到 Linaro 官网查阅。Linaro GCC 编译器下载地址如下:Linaro
鉴于我们后续开发是基于 I.MX6U的,是一个 Cortex-A7 内核的开发板,因此选择 arm-linux-gnueabihf
<Linux开发> linux开发工具-之-交叉编译环境搭建_第4张图片
目前最新的编译器版本是 7.5.0,网上有很多网友在使用最新版本的编译器时,都会遇到各式各样的问题,所以为了避坑,笔者这里选用了4.9-2017.01版本
<Linux开发> linux开发工具-之-交叉编译环境搭建_第5张图片
上图中有很多种交叉编译器,这两种: gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.tar.xz 和 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz,第一个是针对 32 位系统的,第二个是针对 64 位系统的。大家根据自己所使用的 Ubuntu 系统类型选择合适的版本,比如笔者安装的 Ubuntu 20.04 是 64 位系统,因此我要使用 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。

点击对应版本后就会下载了,下载完成后,我们将其放到ubuntu下的/home/water/imax/tool目录,这个目录时笔者用来专门存放工具的目录,读者可自行存放。
通过FTP从windows传到ubuntu中。
<Linux开发> linux开发工具-之-交叉编译环境搭建_第6张图片

2、搭建交叉编译工具链


在 Ubuntu 中创建目录:/usr/local/arm,命令如下:

sudo mkdir /usr/local/arm

将刚刚下载的交叉工具链拷贝到此目录下,命令如下:

sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f

在这里插入图片描述
拷贝完成以后在/usr/local/arm 目录中对交叉编译工具进行解压,解压命令如下:

cd /usr/local/arm/
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

等待解压完成,解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf”的文件夹,这个文件夹里面就是我们的交叉编译工具链。
在这里插入图片描述

修改环境变量,使用 VI 打开/etc/profile 文件,命令如下:

sudo vi /etc/profile

打开/etc/profile 以后,在最后面输入如下所示内容:

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

<Linux开发> linux开发工具-之-交叉编译环境搭建_第7张图片
修改好以后就保存退出,重启 Ubuntu 系统,交叉编译工具链(编译器)就安装成功了。

3、交叉编译工具链关联库


在使用交叉编译器之前还需要安装一下其它的库,命令如下:

sudo apt-get install lsb-core lib32stdc++6

4、交叉编译工具链编译器验证


首先查看一下交叉编译工具的版本号,输入如下命令:

arm-linux-gnueabihf-gcc -v

<Linux开发> linux开发工具-之-交叉编译环境搭建_第8张图片
从图中可以看出当前交叉编译器的版本号为 4.9.4,说明交叉编译工具链安装成功。
编写个简单的例程验证一下;
例程代码如下:

#include 

void main(voiod)
{
    printf("hello OneFu!\n");
    return;
}

<Linux开发> linux开发工具-之-交叉编译环境搭建_第9张图片
根据上诉例子编译得到的可执行文件main,可知其是ARM结构的,就是能在linux板子上运行的可执行程序。

五、安装SecureCRT

参考笔者另一篇文章:windows安装SecureCRT 7.3
SecureCRT 一般常用来作为linux开发板的终端使用,那么就需要安装串口驱动了,笔者这里安装CH340的驱动,读者可自行网上查找对应的驱动,或者联系笔者索要(无偿提供的哟)。

六、安装Visual Studio Code

安装Visual Studio Code并无太多要求,直接网页搜索后下载双击安装即可。ubuntu下还可通过软件商城安装,如下图:
<Linux开发> linux开发工具-之-交叉编译环境搭建_第10张图片
后续将以Visual Studio Code 作为阅读代码,编写代码的主要工具。
读者想用其它工具,可自行安装。

七、总结


至此,嵌入linux开发所需的工具基本准备完成;后续我们就基于这环境来开发Linu相关的项目内容。当然如果开发过程中涉及到其它工具,我们在慢慢补充即可。

笔者QQ:759521350

你可能感兴趣的:(Linux开发工具,ubuntu,Linux驱动开发,linux,ubuntu,嵌入式硬件)