目录
(一)直接使用gcc编译C程序
1.编写C程序
2.gcc直接编译
?(二)与windows平台编程对比
(三)使用Makefile编译c程序
1.Makefile文件编写规则
2.编写Makefile文件并编译
(一)直接使用gcc编译C程序
1.编写C程序
- 编写main1.c
#include"sub1.h"
int main()
{
int x=2,y=9; //定义x和y变量
printf("%.2f\n",x2x(x,y)); //输出处理后的值,保留两位小数
return 0;
}
- 编写sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b); //计算b除以a的结果
#endif
- 编写sub1.c
#include "sub1.h"
/*******************/
/* 参数:a,b */
/* 返回值:ans */
/*******************/
float x2x(int a,int b)
{
float ans;
ans=(float)b/a;
return ans;
}
2.gcc直接编译 -
步骤一 命令:gcc -c sub1.c 作用:将sub1.c程序转换为目标文件sub1.o -
步骤二 命令:gcc main1.c sub1.o -o main1 作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件 -
步骤三 执行./main1命令,即可执行编译生成的main1程序 ? ?(二)与windows平台编程对比 - 工具:dev c++
- 程序:与Ubuntu系统上一致
- 遇到的问题
- 无法多文件编译
因为我的文件夹下有一个main1.c文件,sub1.h和sub1.c文件。此时如果在main1.c文件下直接点击运行按钮会报错,因为sub1.c并没有编译,因此会出现main1.c引用的sub1.c中的函数没有定义的问题。 - 解决方案:建立一个项目,将三个文件放进同一项目中
?
(三)使用Makefile编译c程序
??
-
1.Makefile文件编写规则 target:prerequisites
command # command以一个tab键开始
# target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
# prerequisites是需要生成target所依赖的文件或是目标
# command也就是make需要执行的命令。(任意的Shell命令)
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
-
使用Makefile编译c程序 在源文件目录下执行命令make ,即可编译得到可执行文件main1 -
删除编译产生的中间文件,在源文件目录下执行命令make clean ,即可删除编译过程中产生的*.o文件
参考网站: Ubuntu16.04下C语言的编译及makefile的应用 - lee_24 - 博客园
??
|