静态库编写:
编写.o文件gcc -c(小写) seqlist.c(需要和头文件、main.c文件在同一文件目录下)
libs.a->去掉lib与.a剩下的为库的名称‘s’。
-ls是指库名为s。
-L库的路径。
makefile文件编写:
CFLAGS=-Wall -O2 -g -I ./inc/
LDFLAGS=-L./lib/ -llist
APP=app
SRC=$(wildcard ./src/*.c)
OBJ=$(patsubst %.c, %.o, $(SRC))
CC=gcc
$(APP):$(OBJ)
$(CC) -o $(APP) $^ $(LDFLAGS)
clean:
rm -f $(OBJ) $(APP)
这个是编译后的文件,app文件为编译后的二进制文件。
makefile与shell脚本关系
shell 脚本和 makefile 是两种完全不同的工具,但它们经常在 UNIX 和 Linux 系统中一起使用,尤其是在软件构建和自动化工具链中。让我们分别看看它们,然后探讨它们之间的关系。
1. Shell 脚本:
- Shell 脚本是一种用于自动化操作的脚本语言,它可以在 Unix 或 Linux shell 中运行。
- 它通常用于执行日常的文件和目录操作,处理文本,以及进行系统管理任务。
- Shell 脚本可以直接在命令行上运行,或保存为.sh文件并以脚本方式执行。
2. Makefile:
-makefile是 make 工具使用的文件,它描述了如何从源代码构建目标(通常是可执行程序或库)。
- 它包含了一组规则,这些规则定义了目标文件、依赖项以及将依赖项转换为目标的指令。
- 指令通常是 shell 命令,因此 makefile 会频繁地使用 shell 脚本。
- `make` 工具会检查文件的时间戳来确定哪些文件需要更新,从而只构建那些实际需要更新的部分,而不是从头开始构建整个项目。
关系:
- 在 makefile 中,你会经常看到 shell 命令。这是因为 make 使用 shell 命令来执行构建任务。
- `make` 可以执行任何可在 shell 中运行的命令,包括调用 shell 脚本。
- 通常,较小的任务(如编译单个文件)直接在 makefile 中使用 shell 命令完成,而更复杂的任务(如部署应用程序)可能会调用单独的 shell 脚本来完成。
- 简而言之,makefile 通常调用 shell 命令(或其他工具,如编译器)来完成其工作。因此,shell 脚本和 makefile 经常在构建和部署过程中一起使用。
在实际开发中,尤其是在大型项目中,使用 make 和 makefile 可以极大地简化构建过程,而 shell 脚本则为自动化提供了额外的灵活性和功能。