Makefile中编译选项

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

参考文章:

发表评论

邮箱地址不会被公开。 必填项已用*标注