- 一 .题目要求
- 二 .解答过程详解
- 1.由题意先完成程序文件
- 2.在ubuntu系统中用gcc 命令行方式编译主程序main1.c 并运行
- 2.1先了解gcc编译命令
- 2.2其次将编写的程序文件存入统一文件夹
- 2.3编写命令并运行测试
- 3.在windows系统下用编译主程序main1.c 并运行。
- 3.1在vs2022上建立程序文件
- 3.2测试运行
- 4.在ubuntu系统下用Makefile方式编程主程序
- 4.1了解makefile编译文件规则
- 4.2编写makefile文件并存入同一文件夹里
- 4.3运行测试
- 5.总结
任务4.请编写一个主程序文件 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 并运行。
任务5. 在任务4基础上,在ubuntu系统下用Makefile方式编程主程序
二 .解答过程详解 1.由题意先完成程序文件sub1.c
#include "sub1.h"
float x2x(int a, int b)
{
float ans;
ans = (float)b / a;
return ans;
}
sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include
float x2x(int a, int b);
#endif
main1.c
#include"sub1.h"
int main()
{
int x = 6, y = 9;
printf("%.2f\n", x2x(x, y));
return 0;
}
2.在ubuntu系统中用gcc 命令行方式编译主程序main1.c 并运行
2.1先了解gcc编译命令
单个源文件的编译方法(假设源程序文件名为test.c)
\1. 无选项编译链接
用法:#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
\2. 选项 -o
用法:#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
\3. 选项 -E
用法:#gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。
\4. 选项 -S
用法:#gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。
\5. 选项 -c
用法:#gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
\6. 无选项链接
用法:#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。
多源文件的编译方法(假设有两个源文件为test.c和testfun.c)
\1. 多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。
\2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
#gcc -c testfun.c //将testfun.c编译成testfun.o
#gcc -c test.c //将test.c编译成test.o
#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test
成功运行
成功运行
4.在ubuntu系统下用Makefile方式编程主程序 4.1了解makefile编译文件规则makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
makefile的规则:
目标(target):目标文件1 目标文件2
(Tab) gcc -o 欲建立的执行文件 目标文件1 目标文件2
4.2编写makefile文件并存入同一文件夹里编写makefile文件
main1:sub1.o main1.c
gcc main1.c sub1.o -o main1
sub1.o:sub1.c
gcc -c sub1.c -o sub1.o
clean:
rm *.o
放入文件夹
成功运行
此次作业让我掌握了一些Ubuntu常用命令,并且对文件的编译过程有了一个完整清晰的认识
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)