Linux下如何编写个makefile去编译.h文件所在文件夹和.c文件所在文件夹,并且可以链接静态和动态库的代码?
时间: 2023-02-16 13:27:56 浏览: 120
Linux下C语言编译基础及makefile的编写.doc
在 Linux 下编写 makefile 的方法如下:
1. 定义变量,如 CC(编译器)、CFLAGS(编译选项)、SRC_DIR(源码所在文件夹)、OBJ_DIR(目标文件所在文件夹)等。
2. 在目标文件和依赖文件之间建立关系,如 $(OBJ_DIR)/%.o : $(SRC_DIR)/%.c。
3. 添加编译和链接命令,如 $(CC) $(CFLAGS) -c $< -o $@ 和 $(CC) $(CFLAGS) -o $@ $^。
4. 添加清理命令,如 rm -f $(OBJ_DIR)/*.o。
5. 通过在命令行中运行 make 命令来执行 makefile。
以下是一个示例 makefile,它能够编译 header 文件所在文件夹和 source 文件所在文件夹,并且可以链接静态库和动态库:
```
CC = gcc
CFLAGS = -I/path/to/headers -L/path/to/libraries -lm -static
SRC_DIR = src
OBJ_DIR = obj
# 将所有 .c 文件转换为 .o 文件
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
# 链接所有 .o 文件
main : $(OBJ_DIR)/main.o $(OBJ_DIR)/foo.o $(OBJ_DIR)/bar.o
$(CC) $(CFLAGS) -o $@ $^
# 清理文件
clean :
rm -f $(OBJ_DIR)/*.o
```
要编译这个 makefile,请在终端中键入 make。要清理文件,请键入 make clean。
注意:这个示例中的路径和文件名应该替换
阅读全文