makefile指定库,引入第三方库

您所在的位置:网站首页 环境变量include如何添加 makefile指定库,引入第三方库

makefile指定库,引入第三方库

2023-06-04 11:38| 来源: 网络整理| 查看: 265

由于项目需要,在网上随便看了一下后,记录一下我对目前掌握的makefile理解。

gcc -o a a.c

我们上面,命令行为原型对makefile编译进行深入讲解。上面命令行可以拓展为下面的makefile:

CC=gcc #如果非环境变量,需要指明路径;例如:CC=/home/croos/bin/gcc CFLAGS = -Wall #输出make时的所有警告 DEFINE = #这里加入的宏,在文件代码中可以直接引用 INCLUDE = -I. TARGET = filename #要生成的最终目标,如:可执行程序 SUORCES += $(wildcard *.c) #要编译的目标文件,wildcaed匹配当前目录下所有的.c文件加入 OBJS = $(patsubst %.c,%.o,$(SOURCES)) LIBS += -l1 -l2 ... #一般的,-l1 -l2 这是链接库的规则 即lib1.a或者lib1.so,链接时则写成-l1这 #样的 All:$(OBJS) $(CC) -o $(PROGRAM) $(OBJS) $(LIBS) #链接所有文件 %.o:%.c $(CC) -c $(CFLAGS_WARN) $(DEFINE) $(INCLUDE) $< -o $@ clean: rm -f $(OBJS) rm -f $(TARGET)

这样可以引入第三方库。

总的来说就是在基本的目标命令行之后加入要链接的库。如下:

gcc a a.c -l1 #-l1为编译a.c为a文件时所需要的库

通用模板

CC=/home/ubuntu/workzt/arrch64-linux-gnu/bin/aarch64-linux-gnu-g++ CFLAGS = -Wall -O2 -std=c++11 DEFINE = INCLUDE = -I./include target = SaveStream src = $(wildcard *.cpp) objs = $(patsubst %.cpp,%.o,$(src)) libs = -L/home/ubuntu/workzt/ffmpegTomp4/aarch64_lib/ -lavformat -lavcodec -lavfilter -lswscale -lavutil -lswresample -lavdevice -lm -pthread All:$(target) $(target):$(objs) $(CC) $^ -o $@ $(libs) %.o:%.cpp $(CC) $(CFLAGS) $(DEFINE) $(INCLUDE) -c $< -o $@ clean: rm -f $(objs) rm -f $(target)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3