GCC和Makefile的简单练习
前言
在学习本课程前需要做的准备工作有,完成Ubuntu/Debian的安装,和所需要的库文件(gcc)的下载
一、使用GCC完成HelloWorld的编程
可以先创建一个单独的文件夹来保存我们的作业。
刚刚创建的文件夹下创建一个空的文件,命名为hello.c
在hello.c文件中写入HelloWorld的输出
然后打开控制台,进入文件所在的文件夹,使用gcc -o hello hello.c
可以得到一个命名为hello的文件,之后使用./hello
运行hello,就可以得到输出了
至此,可以验证我们的虚拟机,gcc库并没有问题
二、使用GCC完成两个程序的链接并输出
在这里,我们讲使用命名为main1.c的主程序文件和一个命名为sub1.c的子程序文件 。我们需要做的工作为讲这两个程序链接起来,并完成对其中函数的操作。
首先创建两个文件,分别为main1.c、sub1.c
- main1.c
#include<stdio.h>
#include"sub1."
int main()
{
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%.2f\n",x2x(x,y)); //输出处理后的值,保留两位小数
return 0;
}
- sub1.c
float x2x(int a,int b)
{
float back; //返回值为back
back=a+b;
return back;
}
接着我们使用gcc main1.c -o main1
讲主程序进行编译,然后使用./main1
进行程序运行
如上图,我们输入5和6,进行运算得到11,并保留了2位小数。
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
三、与Windows上编程做比较
在我们自己的编程软件(我使用的是visual studio 2019)上创建两个文件,分别为main1.c、sub1.h
- main1.c
#include<stdio.h>
#include"sub1.h"
int main() {
float x=2, y=3;
printf("%f", x2x(x,y));
return 0;
}
- sub1.h
float x2x(int a, int b)
{
float back;
back = a + b;
return back;
}
运行结果
四、使用Makefile方式编程主程序
1.安装Makefile
我们获取root权限后,输入apt-get install make
2.了解Makefile编程规则
target:prerequisites command # command以一个tab键开始
target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
prerequisites是需要生成target所依赖的文件或是目标 command也就是make需要执行的命令。(任意的Shell命令)
3.实例编程
在进行运行前,我们需要更改main1.c,并创建一个名为sub1.h的文件
- sub1.h
floar x2x(int a,int b);
- 更改main1.c为
#include<stdio.h>
#include"sub1.h"
int main() {
float x=2, y=3;
printf("%f", x2x(x,y));
return 0;
}
接着,创建一个名为Makefile的文件
- Makefile(注意:gcc,rm前的空格必须由TAB键空出来,不能使用空格键)
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
然后我们来到字符界面,输入make
进行编译,之后就可以使用./main1
运行程序
总结
对比起在windows下借用编译工具来编程而言,我们在linux中的编程更加复杂一些,但同时也让我们对于,编译的实际过程更加了解,有助于我们对于底层开发的学习。