本文主要目的是为了通过在Ubuntu系统上叙述编译C程序的详细流程并且熟悉在Linux系统上编写C程序的操作语句及其写法采用两种方式进行编译即gcc编译和Makefile文件编译。

一、环境配置

虚拟机软件VMware Ubuntu

二、相关参数的配置

1.设置虚拟机的网络适配器为NAT模式

选择虚拟机->设置->网络适配器->NAT模式

2.将apt源改为阿里源

使用Linux的Ubuntu时会很卡,需要更换为阿里源来提高下载安装效率。修改系统默认自带的 apt 源,采用的是阿里源。

首先 备份旧源文件:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

接着使查看系统内核号:

sudo lsb_release -a

这里的xenial 为系统内核版本。

接着修改apt 源为阿里源:

sudo gedit /etc/apt/sources.list

删除原文件内容,修改内容如下:

deb http://mirrors.aliyun.com/ubuntu/ version main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ version-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ version-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ version-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ version-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ version main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ version-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ version-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ version-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ version-backports main restricted universe multiverse

接着修改文件里的内核版本号为你系统的版本号,将 version 替换为系统内核号即可。

刷新 apt 列表:

sudo apt update

等待进度条加载完毕

sudo apt-get upgrade

三、编写输出hello world的C程序

1.安装gcc和vim

先更新

sudo apt-get update

安装gcc

sudo apt-get install gcc

检查是否安装成功,查看gcc版本

gcc --version

当出现版本信息时,安装成功,若没有安装成功,注意查看网路是否顺畅,多试几次,或者重启虚拟机。
安装vim编辑器

sudo apt-get install vim

2.vim的三种模式

分别是命令模式输入模式底线命令模式

命令模式:
启动 vim 后,进入命令模式。

以下是常用的几个命令:

i 切换到输入模式。
x 删除当前光标所在处的字符。
: 切换到底线命令模式。
若要编辑文本:启动Vim,进入了命令模式,按下 i,切换输入模式。

输入模式:
在命令模式下,按 i 进入输入模式。

字符按键 + Shift,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
ESC,退出输入模式,切换到命令模式

底线命令模式

在底线命令模式中,基本的命令有(已省略冒号)

q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。

3.编写hello.c文件

编写hello.c 输入命令

 vim hello.c

进入vim编辑器,键入i,进入insert模式,编写代码

#includeint main(){ printf("hello world"); return 0;}

esc键(编译完成):wq! 退出vim编辑。

输入命令

gcc hello.c -o hello

此时会生成hello文件
输入

./hello

四、在ubuntu系统和windows系统分别编译主程序main1.c 并运行

1.ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行

要求求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。

进入vim编辑器,键入i,进入insert模式,

 vim main1.c

编写代码

#includeextern float x2x(int x,int y)int main(){    int x,y;    x=30;    y=2;    float a;    a=x2x(x,y);    printf("%f",a);    return 0;}

进入编辑模式

vim sub1.h

编写代码

#include float x2x(int x,int y){float a;a=x/y;return a;}

gcc命令编译,采用多个文件一起编译,输出放在main1中

gcc main1.c sub1.h -o main1

./main1:用来执行文件

2.在windows系统下编译主程序main1.c 并运行

使用DEV C++进行编译编写main1.c文件

#include #include "sub1.h"int main() {int x,y;x=30;y=2;float a;a=x2x(x,y);printf("%f",a);return 0;}

编写sub1.h头文件

#include float x2x(int x,int y){float a;a=x/y;return a;}

五、在ubuntu系统下用Makefile方式编程主程序

1.makefile介绍

makefile 能够实现大批量文件的简化编译的操作。我们只需要执行 make 命令,工程就会自动编译。每次想要编译工程的时候就执行 make ,省略掉手动编译中的参数选项和命令,很大程度上提高编译的效率。

2.语法规则

:  //:      //第二行必须tab键开始,命令1     // 命令2

3.安装make

sudo apt-get install make

4.用vim编辑makefile

vim makefile

5.makefile文件编写如下:

main: main.c sub1.cmain: main1.o    gcc main1.o -o mainmain.o:main.c sub.h    gcc -c main1.cclean:    rm -rf *.o main

6.在源文件目录执行命令make,即可得到可执行文件main1

7.运行可执行文件,得到结果

总结

通过对嵌入式开发的学习,让我熟练了解了vim、gcc以及makefile的运用,在编写代码的过程中,我遇到了很多困难,我通过不断查找资料克服了这些困难。尽管之前的学习中已经接触过Ubuntu,但知识的运用还是不够熟练,这让我意识到,实践是检验真理的唯一标准,在今后的学习中我会把重心转移到动手能力的提高上,加强实践能力,提高自我能力。

参考文献

Linux——makefile编写 – tp_16b – 博客园 (cnblogs.com)

Ubuntu16.04下C语言的编译及makefile的应用 – lee_24 – 博客园 (cnblogs.com)

(46条消息) Ubuntu系统使用gcc和Makefile编译C程序_不#曾&轻听的博客-CSDN博客

目录

一、环境配置

二、相关参数的配置

1.设置虚拟机的网络适配器为NAT模式

2.将apt源改为阿里源

三、编写输出hello world的C程序

1.安装gcc和vim

2.vim的三种模式

3.编写hello.c文件

四、在ubuntu系统和windows系统分别编译主程序main1.c 并运行

1.ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行

2.在windows系统下编译主程序main1.c 并运行

五、在ubuntu系统下用Makefile方式编程主程序

总结


(46条消息) Makefile基础语法_SD.ZHAI的博客-CSDN博客_makefile语法详解