GCC 编译 C 语言文件

题目要求

请编写一个主程序文件 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 并运行。

在 Ubuntu 下编译并运行程序

创建程序

首先使用 touch main.c 进行程序源文件的创建

创建成功如下:

在文件中编辑号代码之后进行保存,代码如下:

main.c :

#include<stdio.h>
#include<math.h>
#include"sub1.c"extern float xx(int a,int b);int main(){int a,b;scanf("%d %d",&a,&b);float c = x2x(a,b);printf("结果c是:%.5f",c);return 0;
}

sub1.c :

#include<stdio.h>
#include<math.h>float x2x(int a,int b){float c = a;c /= b;return c;
}

gcc 编译运行

由于目标文件是多文件

编辑并保存源文件之后,通过gcc命令进行编译并运行,指令如下:

gcc main.c -o main
./mian

但是由于多文件编译,可以直接进行编译并运行,但是不够严谨,指令如下:

gcc main.c -o mian
./main

运行如下:

根据对 c 语言的汇编与反汇编的分析,所以应该将所有 .c 源文件进行预处理、编译、汇编为 .o 文件后,统一进行链接,最后编译成可执行文件,指令如下:

gcc -c main.c -o main.o
gcc -c sub1.c -o sub1.o
gcc main.o sub1.o -o main
./main

Windows 下编译运行

本人使用 clion 进行编译运行

由图片可见,只要主函数所在源文件引用其他 .c C语言文件,并使用extern语句引用函数,即可调用相对应的函数,直接编译运行即可

在 Win 下与在 Ubuntu 编译运行对比

在 Ubuntu 下1使用这种方法则不需要使用 extern 关键字对多个源文件中的函数进行扩展,而是需要引入单独的 .h 头文件对函数进行定义,方法如下:

sub1.h 代码如下:

#ifnedf SUB1_H
#define SUB1_Hfloat x2x(int a,int b);#endif //SUB1_H

这种格式的代码在 Windows 上不起作用,在 Windows 环境下,只能使用相对应的 extern 关键词(可以不用)并引入对应的 .c 文件,进行函数调用

GCC 编译 C 语言文件相关推荐

  1. gcc编译c语言多线程程序的步骤,GCC分步骤编译C语言程序

    上节<GCC编译C语言程序完整演示>讲解的是通过gcc命令一次性完成编译和链接的整个过程,这样最方便,大家在学习C语言的过程中一般都这么做.实际上,gcc命令也可以将编译和链接分开,每次只 ...

  2. linux c语言编程内嵌汇编,gcc编译c语言中内嵌汇编

    gcc编译c语言中内嵌汇编 --AT&T and Intel 汇编语法对照 寄存器命名: AT&T:  %eax Intel: eax AT&T 语法源地址在左侧,目的地址在右 ...

  3. 将如下c语言代码汇编成s文件,gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...

  4. linux如何用gcc编译c程序,Ubuntu之如何使用gcc编译C语言程序

    在大学里面大家都用过VC6.0来进行编程.VC6.0属于集成开发环境,一份代码从文本变成可执行的程序只需要在其中点击几个按钮就行了,加之老师也只教过我们如何操作,并未介绍C语言的执行过程.上一篇曾提到 ...

  5. centos 7使用gcc编译c语言,CentOS 7编译安装gcc 4.9.4

    1. 为什么要升级到gcc4.9.x呢? 因为最近在做的一个项目中要用C++11新特性,而在 g++ 4.9 之前,regex 库并不支持 ECMAScript 的正则语法,换句话说,在 g++4.9 ...

  6. Linux GCC简明教程(使用GCC编译C语言程序)

    文章目录 Gedit 编辑器 GCC 编译器 1) 生成可执行程序 2) 运行可执行程序 完整的演示 分步骤编译 1) 编译(Compile) 2) 链接(Link) 市面上常见的 Linux 都是发 ...

  7. 怎样用gcc编译c语言,使用GCC编译C语言程序

    使用Eclipse CDT开发C语言程序,虽然使用很方便,效率也很高,但是它向我们隐藏了很多细节.虽然大多数时候这并不影响我们的开发,但是当我们需要对程序的编译链接过程进行更加特殊的控制,以获得可以满 ...

  8. gcc编译自定义头文件

    2019独角兽企业重金招聘Python工程师标准>>> C中外部函数实例 内部函数:static声明,只对本文件域生效,外部不可引用 外部函数,使用extern声明,默认可以去掉,在 ...

  9. gcc 编译引用头文件

    GCC编译器提供了-I选项(字母I就是include单词的首字母大写)用来指定头文件所在的目录.那么,GCC编译器在编译代码时,解析到需要引用头文件时,就去 -I选项指定的目录下查找.下面我们来举例讲 ...

最新文章

  1. [Django学习]第三章 视图和url配置
  2. AlertDialog 点击空白处、返回按钮 行为
  3. SUSTech-Application
  4. python字典视图
  5. 【转】开机出现 error:file “/boot/grub/i386-pc/normal.mod“ not found 错误提示
  6. VC用ADO访问数据库全攻略  作者 相生昌
  7. 【10天基于STM32F401RET6智能锁项目实战第2天】用按键点灯----GPIO的输入和输出
  8. python字典用法大全
  9. http://ilinuxkernel.com/?p=1328
  10. 【驱动】绿联usb转rs232串口(CR104)驱动
  11. google(轻量级依赖注入框架)Guice学习 (四) guice与springboot简单协作、总结
  12. Normal and self-adjoint operator
  13. 三星S3 939/9300 android 4.3 如何打开开发者模式
  14. JZOJ1205. 帮助Bubu(2017.8B组)
  15. 基于Android NFC的门票系统
  16. uni-app微信公众号(4)——地址管理页面
  17. 使用深度学习的单一图像超分辨率
  18. python网络编程(基础含实现简易服务器代码)
  19. Data Wrangling
  20. CSFB 主叫 被叫

热门文章

  1. Vulkan 学习笔记
  2. 爬虫学习经验分享-------某点评网站
  3. 两种常用的全参考图像质量评价指标——峰值信噪比(PSNR)和结构相似性(SSIM)
  4. CentOS 7.5 搭建以太坊私联(联盟链)及区块链浏览器
  5. Python学习资料全面总结,真的对零基础很有用
  6. EXCEL数组公式,求多条件下的中位数的实现方法和注意点
  7. STC 51单片机43——看门狗
  8. 隐藏IDEA的行首的黄色小灯泡
  9. macd金叉不涨又死叉准确率_MACD金叉周线选股公式怎么设置及计算
  10. 网易2017招聘笔试题下厨房Java代码