Ubuntu系统下使用gcc和Makefile编译C程序

本文介绍了在Ubuntu系统中如何使用GCC编译C程序,包括下载GCC、编写和编译C源文件,以及如何通过Makefile自动化编译过程。同时对比了Windows环境下利用QT编译C程序的便捷性。通过学习,读者可以掌握GCC的基本用法和Makefile的编写,提升开发效率。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文是为了熟悉Linux系统的基本操作,并用gcc和Makefile命令行方式编译主程序。

一 gcc是什么?

Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。

gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。


二 gcc基本用法

命令作用
-o output_filename确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出默认的可执行文件 a.out 。
-c只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。
-g产生调试工具 (GNU 的 gdb) 所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。
-O对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理
-Idirname将 dirname 所指出的目录加入到程序 头文件目录列表中,是在预编译过程中使用的参数。
-O2比 -O 更好的优化编译、链接。当然整个编译链接过程会更慢。

三 Ubuntu下使用gcc编译C程序

1.下载gcc

sudo apt-get install gcc    //从开源库里下载开源软件

2.用vim分别编写文件

vim mian.c
vim sub1.h
vim sub1.c

按i进入插入模式进行编写
按ESC进入命令模式输入:wq保存并退出文件

编写main.c

#include"sub1.h"

int main()
{
	int x=2,y=15;            //定义x和y变量
	printf("%.2f\n",x2x(x,y));      //输出处理后的值,保留两位小数
	return 0;
}

编写sub1.h

#ifndef __SUB1_H
#define __SUB1_H

#include<stdio.h>

float x2x(int a,int b);         //计算b除以a的结果

#endif

编写sub1.c

#include "sub1.h"
float x2x(int a,int b)
{
	float num;
	num = (float)b/a;
	return num;
}

生成的相关文件
生成的相关文件

3.用gcc编译

gcc -c sub1.c //将sub1.c程序转换为目标文件sub1.o
gcc main1.c sub1.o -o main2 //编译main1.c文件为可执行文件main
./main2   //执行编译生成的main2程序,得到答案7.5

得到可执行文件
得到可执行文件
执行编译生成的main2程序,得到答案7.5
在这里插入图片描述

四 wiodow下运行main.c程序

工具: QT
例图:
在这里插入图片描述
在这里插入图片描述
对比gcc需要一步步编译形成可执行文件,在window平台下用QT编译执行要方便点。


五 用Makefile编译程序

1.什么是Makefile

makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

2.如何用Makefile编译程序

1.首先要下载make

sudo apt-get install make

2.创建文件makefile


touch makefile

3.编写makefile

vim makefile

内容
在这里插入图片描述
4.用make命令执行
输入make命令后自动生成main可执行文件
在这里插入图片描述
5.执行mian程序
在这里插入图片描述

总结

我们可以发现在Ubuntu下,gcc对文件的操作是单个进行的,当有多个文件时我们使用Makefile会更加方便点,而在window下编程比前两种更加方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值