基于Ubuntu系统,gcc和Makefile的c语言程序编译

文章目录

  • 一.编写hello world程序
    • 1.环境设置
    • 2.vim与gcc的安装
    • 3.vim介绍及操作指令
    • 4.gcc介绍及操作指令
    • 5.程序实现步骤
  • 二.在Windows系统下用VS2019运行程序
    • 1.题目要求
    • 2.程序创建
    • 3.结果演示
  • 三.在ubuntu系统下用gcc方式运行程序
    • 1.程序创建
    • 2.结果演示
  • 四.使用Makefile方式编程
    • 1.Makefile介绍
    • 2.程序创建
    • 3.结果演示
  • 五.总结

  本文主要叙述Ubuntu18.04系统下如何用C语言编写简单程序,以及采用gcc和Makefile方式编译C程序的详细示例过程。

一.编写hello world程序

1.环境设置

虚拟机软件 Vmware
Ubuntu 18.04

2.vim与gcc的安装

打开虚拟机登陆后输入以下两条命令便可成功安装
vim安装命令 sudo apt-get install vim
gcc安装命令 sudo apt-get install gcc

3.vim介绍及操作指令

vi是老式的字处理器。vim是vi发展出来的一个文本编辑器,代码补完、编译及错误跳转等方便编程的功能丰富。
vi编辑器是所有Unix及Linux系统下标准的编辑器,它就相当于Windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器,是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统任何版本,vi编辑器是完全相同的,所以掌握它意义重大。

其中vim中存在三种模式(大众的认知):命令模式编辑模式(输入模式)末行模式(尾行模式)

Vim三个基本模式之间的切换
(1)Normal命令模式<-----> Insert输入模式
1.用Vim打开文件,默认为Normal命令模式。此时按下键盘i、a、o、I健即可进入Insert输入模式。在编辑模式中,按Esc就可返回到Normal命令模式。如若不确定是否进入了Normal模式,可以多次按下Esc键。

编辑命令 作用 常用命令 作用
i 在光标所在字符前开始输入文字 x 删除当前光标所处字符
a 在光标所在字符后开始输入文字 : 切换到末行模式,在最底一行输入命令
o 在光标所在行下开一新行来输入文字 ESC 退出输入模式,切换到命令模式
I 在行首开始输入文字

(2)Normal命令模式<----->Visual末行模式
在Normal命令模式下,按键盘v键进入Visual模式,左下角会有VISUAL字样。在Visual末行模式下,按下键盘上的Esc键回到Normal命令模式。

可输入命令 作用
q 退出程序
w 保存文件
:wq 保存并退出(退出后自动进入Normal命令模式)
:q! 强制退出不保存
:wq! 强制保存并退出

4.gcc介绍及操作指令

Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件,而gcc则通过后缀来区别输入文件的类别。

gcc部分约定规则

.c为后缀的文件,C语言源代码文件;

.a为后缀的文件,是由目标文件构成的档案库文件;

.C或.cc或.cxx为后缀的文件,是C++源代码文件;

.h为后缀的文件,是程序所包含的头文件;

.i为后缀的文件,是已经预处理过的C源代码文件;

.ii为后缀的文件,是已经预处理过的C++源代码文件;

.m为后缀的文件,是Objective-C源代码文件;

.o为后缀的文件,是编译后的目标文件;

.s为后缀的文件,是汇编语言源代码文件;

.S为后缀的文件,是经过预编译的汇编语言源代码文件。

gcc编译过程

编译阶段 编译命令 作用
预处理阶段 gcc -E hello.c -o hello.i 编译器将源代码中包含头文件编译进来
编译阶段 gcc -S hello.i -o hello.s 检查代码规范性并翻译成汇编语言
汇编阶段 gcc -c hello.s -o hello.o 将.s文件转换为目标文件
链接阶段 gcc hello.o -o hello 将目标文件转换为可执行文件

5.程序实现步骤

(1)建立程序
首先输入命令 vim hello.c以此建立名为hello的工程,而后进入vim编辑器,使用命令i进入输入模式,编写代码,具体代码如下:

#include
int main()
{
	printf("hello world!");
	return 0;
}

基于Ubuntu系统,gcc和Makefile的c语言程序编译_第1张图片

(2)输入命令gcc hello.c -o hello
  再输入./hello即可完成hello world的编译得到下图所示
在这里插入图片描述

二.在Windows系统下用VS2019运行程序

1.题目要求

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

2.程序创建

(1)首先创建sub1作为头文件,包含算术运算函数x2x
具体代码如下:

#include
float x2x(int a, int b)
{
	float z;
	z = a * b;
	return z;
}

(2)再创建主程序编写main.c文件,对函数进行调用并输出结果
具体代码如下:

#include
#include"sub1.h"
using namespace std;
int main()
{
	int x, y;
	x = 3; y = 6;
	float k;
	k = x2x(x, y);
	printf("%f", k);
	return 0;
}

3.结果演示

基于Ubuntu系统,gcc和Makefile的c语言程序编译_第2张图片

三.在ubuntu系统下用gcc方式运行程序

1.程序创建

题目要求与上文Windows系统下要求一致,故不再累述。
(1)首先创建主程序文件main1.c和子程序文件sub1.c,进入vim模式输入程序,方式与上文一致。
创建命令为touch main1.c touch sub1.c
main1.c

#include
using namespace std;
int main()
{
	int x, y;
	x = 3; y = 6;
	float k;
	k = x2x(x, y);
	printf("%f", k);
	return 0;
}

sub1.c

#include
float x2x(int a, int b)
{
	float z;
	z = a * b;
	return z;
}
  • 注意:在本人实验中发现若在主函数里面仍按照Windows系统中编译方式引用sub1.c程序(即不用输入此行代码#include"sub1.h")会导致系统报错因此改点需要特别注意一下。

(2)输入命令gcc main1.c sub1.c -o test
生成一个test文件,里面包含了main1.c和sub1.c

(3)输入命令运行程序./test

2.结果演示

基于Ubuntu系统,gcc和Makefile的c语言程序编译_第3张图片

四.使用Makefile方式编程

1.Makefile介绍

make命令执行时,需要一个 Makefile文件,以告诉make命令需要怎么样的去编译和链接程序(makefile文件自己新建就行,名字最好用makefile)。

只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。这就是Makefile的优势所在。

Makefile安装
输入命令sudo apt-get install make即可完成安装

Makefile命令

target ... : prerequisites ...
  command
  • 注意:command前需要缩进
    target 也就是一个目标文件,可以是 Object File,也可以是执行文件,还可以是一个标签(Label),prerequisites 就是要生成那个 target 所需要的文件或是目标;command 也就是 make 需要执行的命令。(任意的 Shell 命令)

Makefile规则

  1. 如果这个工程没有编译过,那么我们的所有 C 文件都要
    编译并被链接。
  2. 如果这个工程的某几个 C 文件被修改,那么我们只编译
    被修改的 C 文件,并链接目标程序。
  3. 如果这个工程的头文件被改变了,那么我们需要编译引
    用了这几个头文件的 C 文件,并链接目标程序。

2.程序创建

(1)我们首先需要创建 makefile 文件
具体命令如下:touch makefile

(2)编辑makefile文件,使用vim进行编辑
命令如下:vim makefile

(3)makefile文件书写内容
基于Ubuntu系统,gcc和Makefile的c语言程序编译_第4张图片

(4)最后我们只需要输入命令make运行程序,再输入程序名./main1进行运行即可

3.结果演示

基于Ubuntu系统,gcc和Makefile的c语言程序编译_第5张图片
还可输入命令ls查看最终所建立的程序
基于Ubuntu系统,gcc和Makefile的c语言程序编译_第6张图片

五.总结

本文先简述了vim和gcc,并通过基本的hello world程序加深对其的基础了解;而后我们分别在Windows系统下,Ubuntu系统,以及使用Makefile完成了编程要求,以上便是本文主要内容。


参考列表

1.https://blog.csdn.net/qq_46467126/article/details/120279485
2.https://blog.csdn.net/qq_45237293/article/details/108741893
3.参考书目:makefile经典简明教程

你可能感兴趣的:(ubuntu,linux)