CFLAGS、CXXFLAGS和LDFLAGS、LIBS和-L、-rpath、-rpath-link和LD_LIBRARY_PATH

日常工作实践中,可以通过变量和编译器配合使用,控制编译器的行为。这些参数必须在gcc命令行中显示指定,使用export命令指定这些变量是无效的。

CLFAGS和CXXFLAGS

CLFAGS表示C编译器的选项,CXXFLAGS 表示C++编译器的选项,用于指定头文件(.h)的路径。
例子:

CFLAGS=-I/usr/include -I/path/include

大多数程序和库在编译时默认的优化级别是"2"(使用"-O2"选项)并且带有调试符号来编译.

CFLAGS="-O2 -g" 
CXXFLAGS="-O2 -g"

LDFLAGS和LIBS

LDFLAGS是传递给连接器的参数,在里面指定库文件的位置。LIBS是告诉链接器要链接哪些库文件。在文件链接的时候需要使用库文件,有时会出现.so文件找不到的情况,可以使用环境变量LDFLAGS指定相关库文件的路径位置。
例子:

export LDFLAGS='-L/var/xxx/lib -Wl,R/var/xxx/lib' 
LIBS = -lpthread -liconv

注意
更新升级软件后,新版本的库文件会替换掉旧版本的库文件,而自己创建的链接文件会保留下来,并指向旧版本的库文件,需要手动修改。

你可能感兴趣的:(编译,#,ld链接,CFLAGS,LDFLAGS)