本文作为嵌入式的基础内容,主要围绕Ubuntu环境配置、网络配置、vim文本编辑器的使用、apt源更换、Linux系统下C语言的编译以及Makefile的基础应用等几个方面展开;了解了这些知识,为我们接下来的嵌入式学习打下基础。
目录
一、Ubuntu环境配置
虚拟机软件 VMware
安装教程:VMware 的安装
Ubuntu 18.04,最好选用镜像安装的方式,省时省力。
安装教程:Ubuntu18.04的安装
二、网络参数配置
VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式)。这里采用虚拟网路配置器来配置虚拟机,将虚拟机网络模式配置成桥接模式。
1、将虚拟机网络适配器更改为桥接模式
选择 :虚拟机->设置-网络适配器->桥接模式->确定。
2、虚拟网络编辑器
选择 :编辑->虚拟网络编辑器->更改设置。
添加网络:Vment0,将此网络设置成桥接模式,并设置自动桥接。也可以手动设置,本文采用的是手动设置,步骤如下:
打开本地的网络连接,找到自己的网络连接接口;在虚拟网络编辑器设置中,找到桥接模式,并设置桥接接口,即刚才所找到的本地网络接口。
3、配置网络连接
设置好之后,在虚拟器终端输入命令,查看自己的网络参数。
ifconfig -a
注意ens33这一段代码,在第二行代码中可以找到我们需要的网络地址、网络掩码、网关等等。
输入命令:
sudo vim /etc/network/interfaces
按i键进入文本编译模式,按照下图输入数据:
输入完成之后,按一下ESC键,输入:wq! 即可保存并退出编辑。
完成所有的这些步骤之后,可以尝试ping一下自己的主机IP地址,然后ping一下外网,比如:ping www.baidu.com :
结果显示,没有连接超时,没有丢包,说明网络配置成功。
三、vim文本编辑器的使用
1、vim编辑器的安装
打开Ubuntu虚拟机,在终端中输入命令:
sudo apt-get install vim-gtk3
之后输入y,稍等片刻即可将vim安装到Ubuntu系统中。
2、常用命令及操作
vim编辑器分为三种模式:
- 命令行模式:复制、粘贴、删除、移动光标
- 编辑模式:编辑文本(按“ i ”开始编辑)
- 末行模式:保存、退出、替换
输入命令创建并用vim进入文件
vim xxx.c
"xxx"代表文件名,在这里,我创建一个hello.c文件,打开vim首先是命令行模式,键入[ i ]即可进入编辑模式,然后编辑文件(注意到,当末行出现“插入”或者"INSERT”的时候,才进入了编辑模式):
文件编辑好之后,按下[ ESC ]键,进入命令行模式,输入[:wq!]即可保存并退出vim编辑器
常用的命令:
命令行模式
- 将光标移动到行结尾:$
- 将光标移动到开头:^
- 删除光标所在行:dd
- 撤销上一步:u
- 复制当前光标所在行:yy
- 粘贴:p
编辑模式
- i——当前光标前编辑
- a——当前光标后编辑
- o——当前光标的下一行进行编辑
末行模式
- 退出:q
- 保存:w
- 保存并退出:wq
- 强制退出:q!
- 保存并强制退出:wq!(常用)
替换命令
ra 将当前字符替换为a,当期字符即光标所在字符
s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
%s/old/new/ 用old替换new,替换所有行的第一个匹配
%s/old/new/g 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g 在第10行知第20行每行前面加四个空格,用于缩进。
ddp 交换光标所在行和其下紧邻的一行
四、apt源更换
我们安装好ubuntu系统后,默认的软件更新源是国外的,所以下载会很缓慢,所以 我们要将软件更新源改成国内的源,具体操作如下:
(1)我们可以先打开源目录看看:先切换到目录:
cd /etc/apt
(2)查看/编辑目录:
sudo vim sources.list
(3)可以发现,红框里的更新源都是国外的软件更新源
(4)解决办法:先在 /etc/apt 目录下备份源(防止意外或是后续需要),输入代码:
sudo cp sources.list sources.list.old
(5)编辑更新源:
sudo vim sources.list
(6)进入编辑模式,将文件中的所有内容删除,更换国内的源,基本上都是清华和阿里云,这里选用阿里云:
阿里云
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
清华大学
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
(7)复制粘贴保存退出,更新缓存:
sudo apt-get update
五、Linux系统和Windows系统下C语言的编译
1、题目要求
请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
1) 请在ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行;
2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。
2、Linux系统下的C语言编译
用vim编辑器新建一个main1.c文件:
vim main1.c
键入[ i ],进入编辑模式,输入代码:
#include<stdio.h>
extern float x2x(int x,int y);
int main()
{
int a = 2;
int b = 3;
float n;
n = x2x(a,b);
printf("%f\n",n);
return 0;
}
main1.c文件编辑完成之后,输入 :wq 保存并退出,再新建一个sub1.c文件:
vim sub1.c
键入[ i ],进入编辑模式,输入代码:
#include<stdio.h>
float x2x(int x,int y)
{
float n;
n = x + y;
return n;
}
编辑完成之后,输入命令运行:
gcc -o main1 main1.c sub1.c
该命令是将两个.c文件配套编译成一个可执行文件,编译正确之后即可输入命令运行生成的可执行文件:
./main1
3、Windows系统下的C语言编译
本文采用的编译软件是Visual Studio,首先建立一个空白工程,分别创建两个源文件:main1.c,sub1.c ,代码同上一步Linux系统里的代码:
直接编译main1.c文件,可以看到结果和Linux系统一模一样:
六、Ubuntu系统下用Makefile方式编译
1、Makefile简介
Linux环境下,当用户编译文件过多的时候,使用makefile可以帮助模块化编译文件,makefile是一个脚本文件,根据规则,来执行相应的脚本文件,实现自动化编译。
2、Makefile规则
Makefile 的框架是由规则构成的。make 命令执行时先在 Makefile 文件中查找各种规则,对各种规则进行解析后运行规则。规则的基本格式为:
每条规则的语法格式:
target1,target2...: depend1, depend2, ...
command
......
......
每条规则由三个部分组成分别是目标(target), 依赖(depend) 和命令(command)。
命令(command):
当前这条规则的动作,一般情况下这个动作就是一个 shell 命令。
—例如:通过某个命令编译文件、生成库文件、进入目录等。
—动作可以是多个,每个命令前必须有一个Tab缩进并且独占占一行。
依赖(depend):
规则所必需的依赖条件,在规则的命令中可以使用这些依赖。
—例如:生成可执行文件的目标文件(*.o)可以作为依赖使用
—如果规则的命令中不需要任何依赖,那么规则的依赖可以为空
—当前规则中的依赖可以是其他规则中的某个目标,这样就形成了规则之间的嵌套
—依赖可以根据要执行的命令的实际需求,指定很多个
目标(target):
规则中的目标,这个目标和规则中的命令是对应的。
—通过执行规则中的命令,可以生成一个和目标同名的文件规则中可以有多个命令,因此可以通过这多条命令来生成多个目标,所有目标也可以有很多个
—通过执行规则中的命令,可以只执行一个动作,不生成任何文件,这样的目标被称为伪目标。
简单来说:
<target>: <prerequisites> // <目标>: <前置条件>
[Tab]<commands> // 第二行必须tab键开始,空格会报错,后面是命令
3、安装Makefile
输入命令:
sudo apt-get install make
4、使用Makefile进行编译
由于之前已经编译了两个.c文件,所以可以直接在vim编辑器中创建新的makefile文件,输入以下命令创建:
vim makefile
在vim编辑器中输入以下代码:
main1: main1.o sub1.o
gcc -o main1 main1.o sub1.o
main1.o: main1.c
gcc -c main1.c
sub1.o: sub1.c
gcc -c sub1.c
clean:
rm *.o
注意:gcc命令前面的空格是【Tab】键,并是不空格键。
保存并退出 vim 编辑器,输入make命令运行刚刚的makefile文件:
结果看出,运行结果无误。