1. LDFLAGS 和 LIBS —— 加载库的路径和具体文件
-
LDFLAGS :链接库使用主要选项 –L告诉链接器从哪里寻找库文件(大写L指定动态库的路径,小写L指定动态库的名称);
-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,-rpath=<路径>"; -
LIBS : 链接库使用-l选项加载具体哪项库文件,LIBS告诉链接器要链接哪些库文件。在/usr/lib等默认路径中加载,例如-lssl表示加载libssl.a或libssl.so文件;
LDFLAGS = -export-dynamic -L/var/xxx/lib -L/opt/mysql/lib -Wl,-rpath=/var/xxx/lib -Wl,rpath=/opt/mysql/lib
LIBS = -lmysqlclient -liconv
2. CFLAGS 或 CPPFLAGS —— 定义宏,选项和头文件路径等
- CFLAGS:编译的时候使用的参数 –Wall –g -c
- CPPFLAGS : 预处理器需要的选项 如:-I (大写i指定头文件路径)
CPPFLAGS= -I/usr/local/libjpeg/include -I/usr/local/libpng/include -D_GNU_SOURCE -DBUILDING_CLIPPY
CFLAGS= -std=gnu99
参考文章: