QMAKE_LFLAGS妙用

本文介绍如何在Qt项目中通过修改.qpro文件来指定自定义的库文件路径,避免版本冲突,并介绍了使用QMAKE_LFLAGS参数的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    转自:http://blog.youkuaiyun.com/onlyou930/article/details/6423647


    当程序依赖的库不断增多时,如果把所有的库放到一起,当目标机上同时也有其他应用程序需要某个特定版本库的时候,这种做法会造成严重的版本冲突问题。专业的做法是,自己的程序依赖库只放到应用程序特定的目录下,程序去连接对应目录的库文件运行。

 

    在make文件编写中,LFLAGS选项可以设置自定义的可执行程序库文件查找路径。那么在Qt中如何设置、修改.pro文件,使用qmake来自动生成LFLAGS依赖?


    在“qmake Variable Reference”(qmake 变量参考)一节中,正是这个参数:QMAKE_LFLAGS,会修改Makefile的LFLAGS选项。本参数包含了传递给连接器的一组通用的标记。如果要为某个特定平台或者特殊项目修改选项,可以使用某个特殊参数,而可不用本参数。与之对应的还有QMAKE_LFLAGS_CONSOLE(仅适用于 Windows)、QMAKE_LFLAGS_DEBUG(指定Debug版依赖库路径)、QMAKE_LFLAGS_RELEASE(指定 Release版依赖库路径)…


    使用指定的QMAKE_LFLAGS的好处在于,能够根据当前编译的不同配置(例如debug/release)选择不同路径下的依赖库(这些库也可能分为debug/release版)。当然,如果所有依赖库版本都相同,那么直接修改QMAKE_LFLAGS效果是一样的。


    那么,在Qt项目的pro文件中,增加一行: QMAKE_LFLAGS += "-Wl,-rpath=[自定义库文件路径] -Wl,-Bsymbolic ",然后执行qmake,make 即可。其中 Wl 表示将紧跟其后的参数,传递给连接器ld。Bsymbolic表示强制采用本地的全局变量定义,这样就避免动态链接库的全局变量定义被应用程序/动态链接库中的同名定义给覆盖了.


例如:

     QMAKE_LFLAGS += "-Wl,-rpath=/opt/pclibs/lib -Wl,-Bsymbolic"


----------------------------分割线------------------------------

当然,和Qt中使用pkgconfig结合使用就更完美了

   PKG_CONFIG = PKG_CONFIG_PATH=/opt/pc_linux/lib/pkgconfig/ pkg-config

   #设置PKG_CONFIG路径

   CONFIG += link_pkgconfig

   #此选项会调用${ avcodec avutil 路径 }/lib/pkgconfig里面.pc中列举的相关头文件和库路径
   PKGCONFIG +=libavcodec libavutil


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值