【嵌入式基础】Ubuntu系统下C语言的编译及Makefile的应用

本文作为嵌入式的基础内容,主要围绕Ubuntu环境配置、网络配置、vim文本编辑器的使用、apt源更换、Linux系统下C语言的编译以及Makefile的基础应用等几个方面展开;了解了这些知识,为我们接下来的嵌入式学习打下基础。

目录

一、Ubuntu环境配置

二、网络参数配置

1、将虚拟机网络适配器更改为桥接模式

 2、虚拟网络编辑器

3、配置网络连接

三、vim文本编辑器的使用

1、vim编辑器的安装

 2、常用命令及操作

命令行模式

编辑模式

末行模式

替换命令

四、apt源更换

 五、Linux系统和Windows系统下C语言的编译

1、题目要求

2、Linux系统下的C语言编译

3、Windows系统下的C语言编译

 六、Ubuntu系统下用Makefile方式编译

1、Makefile简介

2、Makefile规则

命令(command):

依赖(depend):

目标(target):

 3、安装Makefile

 4、使用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文件:

 结果看出,运行结果无误。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值