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

本文详细介绍了CFLAGS和CXXFLAGS在C/C++编译过程中的作用,用于设置头文件路径。LDFLAGS用于指定链接器的参数,特别是库文件位置。LIBS则定义了链接时需要链接的库。同时,解释了-L、-rpath和-rpath-link的区别,以及动态库查找路径LD_LIBRARY_PATH的重要性。在某些情况下,还需要使用-WL,R参数确保运行时库文件路径正确。补充内容提到了-C参数在编译过程中的应用。" 120756120,9974966,Linux内核分析:sparse、CHECKER与__user宏,"['Linux内核', 'C++', '编程工具']
摘要由CSDN通过智能技术生成

日常工作实践中,可以通过变量和编译器配合使用,控制编译器的行为。这些参数必须在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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值