在Ubuntu系统下,用gcc/makefile对c语言程序的简单编译

在Ubuntu系统下,用gcc/makefile对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 并运行。

  1. 在任务4基础上,在ubuntu系统下用Makefile方式编程主程序。

二、编译

1.gcc

(1)使用代码

-c: 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。
-o: <输出文件名>用来指定编译结束以后的输出文件名,如果不使用这个选项的话 GCC 默认编译出来的可执行文件名字为 a.out。
-g: 添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编译的时候生成调试所需的符号信息。
-O: 对程序进行优化编译,如果使用此选项的话整个源代码在编译、链接的的时候都会进行优化,这样产生的可执行文件执行效率就高。
-O2: 比-O 更幅度更大的优化,生成的可执行效率更高,但是整个编译过程会很慢。

(2)编译程序

创建程序

用touch命令创建主次程序文件main1.c,sub1.c。

代码如下(示例):

touch main1.c
touch sub1.c

ubuntu实验截图
在这里插入图片描述

写入程序

首先,利用vim编辑文件,进入文件后,用i进入inset模式,编入代码

代码如下(main1.c):

#include<stdio.h>
int main()
{
   int m=8,n=6;
   float a;
   a = x2x(m,n);
   printf("%f",a);
   return 0;
}

ubuntu实验截图
在这里插入图片描述

代码如下(sub1.c):

#include<stdio.h>
float x2x(int x,int y)
{
      float z;
      z = x*y;
      return z;
}

ubuntu实验截图
在这里插入图片描述

(3)用gcc使用程序

将main1.c和sub1.c根据命令 gcc main1.c sub1.c -o test 生成一个test文件,然后输入./test运行。
在这里插入图片描述

2.在windows环境下用Visual studio 2019编译

(1)sub1.c

在visual studio 2019中打开并创建一个文件,在头文件创建一个sub1.c,并将代码写入
在这里插入图片描述

(2)main1.c

在源文件中创建一个新建项后缀为cpp的,写入代码,并引用“sub1.c”
在这里插入图片描述

(3)运行结果

点击在windows环境下运行编译,结果如下
在这里插入图片描述

3.makefile

(1)makefile介绍

make是一个应用程序,解析源程序之间的依赖关系,根据依赖关系自动维护编译工作,执行宿主操作系统中的各种命令。
makefile是一个描述文件,定义一系列的规则来指定源文件编译的先后顺序
拥有特定的语法规则,支持函数定义和函数调用,能够直接集成操作系统中的各种命令。

(2)使用

sudo apt-get install make来安装
在这里插入图片描述1.用touch创建makefile文件
2.用vim编辑makefile
在这里插入图片描述在这里插入图片描述3.使用
因为makefile中,所以touch sub1.h,并vim编辑一个相同内容,然后使用make命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
程序运行结果

在这里插入图片描述

总结

`本文主要提及了在ubuntu 18.04环境下用gcc和makefile命令简单编程,还有在windows环境下使用Visual Studio 2019下编辑的简单hello world程序

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值