在编译一些开源包的时候,我们经常会遇到CFLAGSDFLAGS等一些变量,这里我们简单介绍一下,在此做个记录,以便于后续查阅。

1. CFLAGS 和CXXFLAGS区别

  • CFLAGS通常表示用于C编译器的选项。比如指定头文件(.h文件)的路径
CFLAGS=-I/usr/include -I/path/include

通过上面就把相应目录追加到了头文件的查找路径中。

  • CXXFLAGS表示用于C++编译器的选项

2. LDFLAGS和LIBS区别

LDFLAGS是选项,LIBS是要链接的库。

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib
LIBS = -lmysqlclient -liconv

3. 命令行

建议在gcc命令行中显式的指定这些参数,而不是export的方式。

# gcc ${CFLAGS} main.c

再比如:

# ./configure --prefix=install_dir CFLAGS="-I/home/ivanzz1001/3rd/openssl/include" LDFLAGS="-L/home/ivanzz1001/3rd/openssl/lib"



[参看]

  1. 编译选项含义:CFLAGS和LDFLAGS