准备工作
vi sub1.c # 创建sub1.c文件
vi main1.c # 创建main1.c文件
编写 sub1.c :
float x2x(int a, int b){
return a + b;
}
编写 main1.c:
#include<stdio.h>
#include"sub1.c"
int main(){
int a = 2, b = 3;
printf("%f\n",x2x(a, b));
return 0;
}
直接使用 gcc 命令生成可执行文件
gcc -o main1 main.c # 将输出文件放入main1中
./main1 # 运行main1
结果如下:
使用MakeFile方式进行编译链接
在你放置 C 程序的目录下创建 makefile 文件:
touch makefile # 创建makefile文件
语法规则:
target: prerequisites # target为需要生成的目标,prerequisites为依赖项
command # command为make需要执行的shell命令
注意:其中 command 前必须以tab键开始
编辑 makefile 文件:
#MakeFile
main1: main1.o sub1.o
main1.o main1.c sub1.h
cc -c main1.c
sub1.o: sub1.c sub1.h
cc -c sub1.c
clean:
rm *.o main1
注意:在编辑 makefile 文件时,新添加了 sub1.h 头文件,不然运行 make 进行编译链接时会报如下错误
添加 sub1.h 头文件,内容如图:
修改 sub1.c 源文件,内容如图:
修改 main1.c 源文件,内容如图:
完成如上修改后,执行如下命令:
make # 进行编译链接
./main1 # 运行main1
make clean # 删除所有 .o 文件和 main1 文件
用命令行进行编译链接
gcc -c main1.c # 编译 main1.c 生成 main1.o
gcc -c sub1.c # 编译 sub1.c 生成 sub1.o
gcc -o main main1 mian1.o sub1.o # 链接 main1.o 和 sub1.o 生成 main1 可执行文件
./main1 # 运行 main1
参数 -c 和 -o 的区别:
-c:只编译生成中间同名目标文件,不链接
- gcc -c main1.c(编译生成 main.o 文件)
-o:指定输出文件名,该文件为可执行文件,不加 -o 会默认生成 a.out
- gcc -o main1 main1.c (直接生成可执行文件 main1)
在Windows下使用VS2017编译main1.c并运行
-
创建一个空项目
-
分别创建 sub1.h 、sub1.c 、main1.c文件,代码内容和贴出的三张图片内容一样。
-
点击运行
此时会报 “error C4996” 的错误,意思是 scanf 这个函数或者变量可能不安全。
解决办法:在 main1.c 所有 include 头文件之前定义宏:#define _CRT_SECURE_NO_DEPRECATE
-
修改后,重新运行