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_H
float x2x(int a,int b);
#endif //SUB1_H
这种格式的代码在 Windows 上不起作用,在 Windows 环境下,只能使用相对应的 extern 关键词(可以不用)并引入对应的 .c 文件,进行函数调用