提示:本文章是对于嵌入式开发课程前的知识复习
【嵌入式开发基础知识】Ubuntu系统下编译C程序
前言
本文主讲VMware 下 Ubuntu 18.04 Desktop,通过编译简单的C程序熟练掌握Ubuntu常用命令,并学习使用vi/vim、gedit文本编辑软件
一.环境搭建
虚拟机软件 Vmware
Ubuntu 18.04
二、网络配置
vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
博客里已有详细的教程,因而本主就不再赘述。详细请点击 VMware虚拟机三种网络模式详解与配置
三、更换ubunt软件源
Ubuntu系统一般采用 apt-get 命令进行某个软件的在线查找和安装,默认官方的软件源仓库位于国外,下载速度较慢。需要修改系统参数,选择国内镜像软件源仓库,以提高软件安装速度。
step 1: 首先看看国内有哪些源
查找源请点击
我们选择阿里云源与清华大学源(任意源都可),将它们的 Ubuntu 源的服务器地址先复制下来,下面会用到。
阿里云源: http://mirrors.aliyun.com/ubuntu/
清华源: http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
step 2: 获取 Ubuntu 代号
Ubuntu 每个发行版本都有自己的代号,我们要通过我们电脑上 Ubuntu 的代号去找对应的源,Ctrl+Alt+T 打开终端,执行以下命令:
然后会得到我们自己的 Ubuntu 的版本信息
最后一栏 codename 后面的就是我们自己的 Ubuntu 的代号。比如我安装的是 Ubuntu 18.04.1,查出来的代号就是 bionic.
step 3: 编辑源
在 step 1 打开的那个网页最顶端找到 模板:18.04source ,将里面的内容复制到文本编辑器,
将上图中每一行的红色的边框内的服务器地址改为自己选中的国内源,例如本主选择的阿里云源与清华大学源;
然后将紫色边框中的内容改为你自己的Ubuntu 的代号,比如本主的bionic。
因此本主的更改后代码如下
下面展示一些 内联代码片
。
// # 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# 清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
step 4: 修改源文件 sources.list
Ubuntu 的源存放在在 /etc/apt/ 目录下的 sources.list 文件中,修改前我们先做个备份,在终端中执行以下命令:
// sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
然后执行下面的命令打开 sources.list 文件,清空里面的内容,把上面我们编辑好的国内的源复制进去,保存后退出。
// sudo gedit /etc/apt/sources.list
step 5: 更新软件列表和升级
在终端上执行以下命令更新软件列表,检测出可以更新的软件:
// sudo apt-get update
在终端上执行以下命令进行软件更新:
// sudo apt-get upgrade
四、编写一个简单的输出hello world的C程序
安装
安装gcc
在终端打开,两行代码:
sudo apt-get update
sudo apt-get install gcc
查看是否安装成功:
man gcc
安装vim
在终端打开,一行代码:
sudo apt-get install vim
查看是否安装成功:
vim --version
vim使用
vim使用共分为三种模式,分别是命令模式、输入模式、底线命令模式。
启动vim,进入命令模式,此时敲击键盘会被vim识别为命令,而非输入字符。如此时按下i,并不会输入字符,而是被当作切换到输入模式的命令。
几个常用命令: i 切换到输入模式,以输入字符 x 删除当前光标所处字符 : 切换到底线命令模式,在最底一行输入命令 ESC
退出输入模式,切换到命令模式在底线命令模式中,基本的命令有:
q 退出程序
== w 保存文件 ==
在之后的部分我们会用到
==wq!==命令 惊叹号在vim中常常具有强制的意思
:wq指储存后离开 如果为:wq! 则为强制存储后离开(常用)
编写
vi编辑器是Linux系统下标准的编辑器
-
通过vim创建一个文档hello.c:
-
进入下面这个页面之后无法进行编辑,因为目前还是命令行模式
-
输入i之后进入插入模式,可以开始进行编辑:
-
输入相应的程序
注意:按下esc键,输入:wq!
按回车键,输入ls键验证文件是否保存
-
运行helloworld程序
确定c文件存在后,使用命令gcc c文件名 -o 生成的可执行文件名(例:gcc demo1.c -o demo1)。输入编译命令后,如果没显示什么信息,就意味编译成功了
编译成功后,再用ls命令查看一下可执行文件是否有生成
最后再运行一下可执行文件,可以看到,正确输出语句: Hello World!
五.输入两个整型参数进行运算(Linux与Windows比较)
1.要求
编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
2.编写C语言代码(Linux)
同样,利用vim编辑器编写C语言代码,命令不再赘述。
之后输入命令运行
gcc main1.c sub1.c -o main1
./main1
编写C语言代码(Windows)
建立工程文件
编写main.c文件
#include <stdio.h>
#include "sub1.h"
int main()
{
int x,y;
x=3;y=2;
float r;
r=x2x(x,y);
printf("%f",r);
return 0;
}
编写sub1.h头文件
#include <stdio.h>
float x2x(int x,int y)
{
float r;
r=x+y;
return r;
}
运行结果
六.用makefile编译上述程序
1.makefile介绍5
在Shell脚本中使用make命令来进行编译,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;
makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;
很多大型项目的编译都是通过 Makefile 来组织的。
2.make如何工作
1.make在当前目录下寻找makefile或Makefile文件
2.若找到,查找文件中第一个目标文件.o
3.若目标文件不存在,根据依赖关系查找.s文件
4.若.s文件不存在,根据依赖关系查找.i文件
5.若.i文件不存在,根据依赖关系查找.c文件,此时.c文件一定存在,于是生成一个.c文件之后再去执行。
3.安装make
输入命令
sudo apt-get install make
4.用vim编辑makefile
main1:sub1.o main1.c
gcc main1.c sub1.o -o main1
sub1.o:sub1.c
gcc -c sub1.c -o sub1.o
clean:
rm *.o
在vim文本中
保存并退出后,在命令行输入make即可实现。