GCC 编译 C 语言文件
GCC 编译 C 语言文件
题目要求
请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c
要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b)此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回主程序 main1.c,定义并赋值两整型变量,然后调用函数 x2x ,将 x2x 的返回结果printf出来
请在 ubuntu 系统用 gcc 命令行方式编译主程序 main1.c 并运行;
请在 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 语言文件相关推荐
- gcc编译c语言多线程程序的步骤,GCC分步骤编译C语言程序
上节<GCC编译C语言程序完整演示>讲解的是通过gcc命令一次性完成编译和链接的整个过程,这样最方便,大家在学习C语言的过程中一般都这么做.实际上,gcc命令也可以将编译和链接分开,每次只 ...
- linux c语言编程内嵌汇编,gcc编译c语言中内嵌汇编
gcc编译c语言中内嵌汇编 --AT&T and Intel 汇编语法对照 寄存器命名: AT&T: %eax Intel: eax AT&T 语法源地址在左侧,目的地址在右 ...
- 将如下c语言代码汇编成s文件,gcc编译c语言程序
编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...
- linux如何用gcc编译c程序,Ubuntu之如何使用gcc编译C语言程序
在大学里面大家都用过VC6.0来进行编程.VC6.0属于集成开发环境,一份代码从文本变成可执行的程序只需要在其中点击几个按钮就行了,加之老师也只教过我们如何操作,并未介绍C语言的执行过程.上一篇曾提到 ...
- centos 7使用gcc编译c语言,CentOS 7编译安装gcc 4.9.4
1. 为什么要升级到gcc4.9.x呢? 因为最近在做的一个项目中要用C++11新特性,而在 g++ 4.9 之前,regex 库并不支持 ECMAScript 的正则语法,换句话说,在 g++4.9 ...
- Linux GCC简明教程(使用GCC编译C语言程序)
文章目录 Gedit 编辑器 GCC 编译器 1) 生成可执行程序 2) 运行可执行程序 完整的演示 分步骤编译 1) 编译(Compile) 2) 链接(Link) 市面上常见的 Linux 都是发 ...
- 怎样用gcc编译c语言,使用GCC编译C语言程序
使用Eclipse CDT开发C语言程序,虽然使用很方便,效率也很高,但是它向我们隐藏了很多细节.虽然大多数时候这并不影响我们的开发,但是当我们需要对程序的编译链接过程进行更加特殊的控制,以获得可以满 ...
- gcc编译自定义头文件
2019独角兽企业重金招聘Python工程师标准>>> C中外部函数实例 内部函数:static声明,只对本文件域生效,外部不可引用 外部函数,使用extern声明,默认可以去掉,在 ...
- gcc 编译引用头文件
GCC编译器提供了-I选项(字母I就是include单词的首字母大写)用来指定头文件所在的目录.那么,GCC编译器在编译代码时,解析到需要引用头文件时,就去 -I选项指定的目录下查找.下面我们来举例讲 ...
最新文章
- [Django学习]第三章 视图和url配置
- AlertDialog 点击空白处、返回按钮 行为
- SUSTech-Application
- python字典视图
- 【转】开机出现 error:file “/boot/grub/i386-pc/normal.mod“ not found 错误提示
- VC用ADO访问数据库全攻略 作者 相生昌
- 【10天基于STM32F401RET6智能锁项目实战第2天】用按键点灯----GPIO的输入和输出
- python字典用法大全
- http://ilinuxkernel.com/?p=1328
- 【驱动】绿联usb转rs232串口(CR104)驱动
- google(轻量级依赖注入框架)Guice学习 (四) guice与springboot简单协作、总结
- Normal and self-adjoint operator
- 三星S3 939/9300 android 4.3 如何打开开发者模式
- JZOJ1205. 帮助Bubu(2017.8B组)
- 基于Android NFC的门票系统
- uni-app微信公众号(4)——地址管理页面
- 使用深度学习的单一图像超分辨率
- python网络编程(基础含实现简易服务器代码)
- Data Wrangling
- CSFB 主叫 被叫