gcc命令行方式
在Ubuntu系统下,先将main.c与sub1.h的程序保存文件夹中。
代码如下
main.c
定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来
#include<stdio.h>
#include"sub1.h"
float x2x(int a,int b);/*对a,b求乘积*/
main()
{
float x;
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
x=x2x(a,b);
printf("%f",x);
}
sub1.c
子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回
#include<stdio.h>
float x2x(int a,int b)
{
float x;
x=a*b;
return x;
}
- 命令:
gcc -c sub1.c
- 作用:将sub1.c文件进行编译转化为sub1.o(即可执行程序)
- 命令:
gcc main1.c sub1.o -o main1
- 作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件
指令行输入ls查看当前文件夹中的文件,检查是否都生成可执行程序(如果不执行此条命令可能导致没有权限执行main1程序)
在Ubuntu上用Makefile编译C语言程序
makefile的价值:在之前运用gcc方式编译时我们需要在指令行中分别将sub1.c和main1.c程序转化为可执行程序,并且还要将其连接起来,还会涉及到一定的权限问题,较为麻烦。所以我们可以创建一个Makefile文件,将这些指令都装到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
在“1”文件夹中创建一个Makefile文件,并将上述的代码写入Makefile文件中(这时一定要注意,tab开头的指令是红色的,而用空格代替的指令行不是红色的
当我们输入“make”执行Makefile文件后再输入“ll”进行观察时,发现此时的sub1已经变为以.o结尾的可执行文件了,而此时也已建立好sub1和main1之间的链接,所以现在可以执行了。