使用GNU make 编译C程序
命令行下编译C程序的方法有以下几种:
- 手工执行
- 编写一个脚本来执行这些重复执行的命令
- 使用make工具自动生成软件
手工编译
-
例子:
项目目录
- |——makefile
- |——src目录——app.c、app.h、main.c、lib.c、bar.c
手工编译命令
gcc -o exe src/app.c src/main.c src/lib.c src/bar.c
该命令的执行步骤如下:
gcc -c -o main.o src/main.c
gcc -c -o app.o src/app.c
gcc -c -o bar.o src/bar.c
gcc -c -o lib.o src/lib.c
gcc -o exe app.o main.o lib.o bar.o
脚本方式
缺点是:每次调用都会重新生成整个项目
#!/bin/sh
gcc -c -o main.o src/main.c
gcc -c -o app.o src/app.c
gcc -c -o bar.o src/bar.c
gcc -c -o lib.o src/lib.c
gcc -o exe app.o main.o lib.o bar.o
makefile文件
能够理解项目的依赖关系,只对更改的文件进行编译
exe:main.o app.o lib.o bar.o
gcc -o exe app.o main.o lib.o bar.o
main.o:src/main.c src/lib.h src/app.h
gcc -c -o main.o src/main.c
app.o:src/app.c src/lib.h src/app.h
gcc -c -o app.o src/app.c
bar.o:src/bar.c src/lib.h
gcc -c -o bar.o src/bar.c
lib.o:src/lib.c src/lib.h
gcc -c -o lib.o src/lib.c