Qt程序依赖库编译选项
2010-06-23 17:55
127 查看
Qt编程4个多月以来,对于工程文件的组织一直有着更深入的理解。从起初的.pro,Makefile,.h,.cpp,.o,.moc,*_ui.h,.so等一股脑的放到工程文件,到后来有组织的将文件分门别类的放到各个项目子目录下,工程目录给人感觉越来越显得更professinal一些了。
然而对于编译后的动态库文件依赖关系的处理,近期随着工程代码的不断膨胀,依赖库的不断增多,变得越来越重要了。此前的做法是,简单粗暴的把私有依赖的库文件cp到/usr/lib下,然后ldconfig,自己的程序就能跑起来了。但是当目标机上同时也有其他应用程序需要某个特定版本库的时候,这种做法会造成严重的版本冲突问题。
因此,专业的做法是,自己的程序依赖库只放到应用程序特定的目录下,程序去连接对应目录的库文件运行。那么,使用Qt编译Linux下的应用程序该怎么做呢?
经过摸索、查看Qt联机帮助,并亲自实践,实现起来十分简单。
在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_RELEASE += -Wl,-rpath=[自定义库文件路径]-Wl,-Bsymbolic
然后执行qmake,make,把/usr/lib下的所有自定义库删掉,运行一下自己的程序,发现已经生效了。
然而对于编译后的动态库文件依赖关系的处理,近期随着工程代码的不断膨胀,依赖库的不断增多,变得越来越重要了。此前的做法是,简单粗暴的把私有依赖的库文件cp到/usr/lib下,然后ldconfig,自己的程序就能跑起来了。但是当目标机上同时也有其他应用程序需要某个特定版本库的时候,这种做法会造成严重的版本冲突问题。
因此,专业的做法是,自己的程序依赖库只放到应用程序特定的目录下,程序去连接对应目录的库文件运行。那么,使用Qt编译Linux下的应用程序该怎么做呢?
经过摸索、查看Qt联机帮助,并亲自实践,实现起来十分简单。
在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_RELEASE += -Wl,-rpath=[自定义库文件路径]-Wl,-Bsymbolic
然后执行qmake,make,把/usr/lib下的所有自定义库删掉,运行一下自己的程序,发现已经生效了。
相关文章推荐
- Qt程序依赖库编译选项
- 如何自己编译Qt,为静态编译程序减少依赖方便发布做准备
- 快速获取Qt编译Release程序所依赖的qt库
- Windows下用VC与QT编译MPI程序入门
- VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- QT 5程序所依赖的库
- QT 编译(程序发布),提示缺少某些插件的解决方案
- 解决VS2012(update3)静态编译的Qt5.1.1程序无法运行的问题
- 记错:QT程序编译生成后在自己机器上能够运行,却无法在别人机器上运行
- qt-5.6.0 移植之qt源码编译-configure选项
- linux下QT程序编译时的错误:QMAKESPEC has not been set, so configuration cannot be deduced.
- 编译Ngnix遇到的问题,查看程序依赖的库文件
- 如何用NSIS打包程序( 加载好依赖QT打包参考)
- 关于DSP程序编译优化选项o3的问题
- 出现"若 要针对 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”特性的值必须为“v4.0”或更高版本。若要针对 .NET Frame
- QT编译程序出现[ui_Widget.h] Error 1
- 出现"若要针对 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”特性的值必须为“v4.0”或更高版本。……"错误
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
- ubuntu16.04编译QT5.6所依赖的库
- 静态编译QT程序图片显示的问题