Qt编译可执行文件加载本目录下的库(绿色软件)

在.pro文件中加入

QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN\''

qmake生成Makefile文件中LFAGS中有-rpath
在这里插入图片描述

编译完之后执行

readelf -d  可执行文件 | grep rpath

出现下面正常

0x000000000000000f (RPATH)              Library rpath: [$ORIGIN]

这样在运行可执行程序时就不是再eport LD_LIBRARY_PATH了,把所有库存放在可执行文件同级目录下即可。

拷贝动态库方法:步骤3中的 1)(https://blog.youkuaiyun.com/dongjuexk/article/details/106855856)


记录方法:

指定某动态库位置方法

QMAKE_LFLAGS += -Wl,-dynamic-linker,/opt/kingsoft/convert_service/tools/ld-linux-x86-64.so.2
<think>嗯,用户问的是如何在Linux下静态编译Qt,生成独立运行的可执行文件。这个问题我之前遇到过,但具体步骤可能记不太清了。首先,我需要回忆一下Qt静态编译的基本流程。 记得Qt默认是动态编译的,所以生成的可执行文件需要依赖动态链接。用户提到之前编译动态失败,后来尝试静态编译,花了一晚上时间。这说明静态编译需要重新配置和编译Qt源码,而不仅仅是普通的安装。 首先,用户需要下载Qt的源码包,而不是通过包管理器安装预编译的版本。因为静态编译需要从源码开始配置。然后,配置时需要指定-static选项,可能还需要调整其他参数,比如选择需要的模块,关闭不需要的功能以减少体积。 接下来,可能需要安装一些依赖,比如OpenGL或其他开发。如果缺少依赖,编译过程可能会报错。比如,用户之前遇到的动态链接缺失的问题,可能是因为动态编译后没有正确部署文件,而静态编译应该把所有依赖打包进可执行文件。 然后,编译Qt源码本身可能需要较长时间,尤其是选择静态编译。用户提到花了一夜时间,这说明编译过程确实比较耗时,特别是如果机器配置不高的话。 完成Qt的静态编译后,编写应用程序时需要在.pro文件中添加配置,比如static链接的选项,确保生成的Makefile使用静态编译应用程序后,使用ldd命令检查是否还有动态依赖,如果没有,说明静态编译成功。 另外,用户可能需要处理一些常见问题,比如插件的问题。Qt的一些功能,如图像格式插件,默认是动态加载的,静态编译时需要将这些插件也编译进去,并在代码中手动加载,否则程序可能无法正确使用这些功能。 还要注意许可证问题,Qt的某些模块在静态链接时可能需要商业许可证,用户需要确认自己使用的是LGPL版本还是商业版,避免法律问题。 总结步骤的话,应该是:安装依赖、下载源码、配置静态选项、编译安装Qt、配置项目使用静态、处理插件和依赖,最后测试可执行文件是否独立运行。</think>### 如何在Linux下静态编译Qt生成独立可执行文件 #### 1. 安装必要依赖 首先需要安装基础编译工具链和Qt的依赖: ```bash sudo apt-get install build-essential libgl1-mesa-dev libxkbcommon-x11-dev libfontconfig1-dev libfreetype6-dev ``` #### 2. 获取Qt源码 从[Qt官方下载页面](https://download.qt.io/official_releases/qt/)选择指定版本源码包: ```bash wget https://download.qt.io/official_releases/qt/6.4/6.4.3/single/qt-everywhere-src-6.4.3.tar.xz tar -xf qt-everywhere-src-6.4.3.tar.xz ``` #### 3. 配置静态编译参数 进入解压目录后执行配置命令: ```bash ./configure -static -prefix /opt/Qt-static \ -opensource -confirm-license \ -nomake examples -nomake tests \ -skip webengine ``` - `-static`:启用静态编译模式 - `-prefix`:指定安装路径 - `-skip webengine`:跳过需要动态的组件[^1] #### 4. 执行编译安装 ```bash make -j$(nproc) sudo make install ``` 编译过程可能需要数小时,具体取决于硬件配置 #### 5. 配置开发环境 在Qt Creator中: 1. 添加静态编译套件 2. 设置qmake路径为`/opt/Qt-static/bin/qmake` 3. 在项目.pro文件中添加: ```qmake CONFIG += static QMAKE_LFLAGS += -static ``` #### 6. 处理静态插件依赖 对于需要使用的插件(如图像格式支持),需在代码中显式加载: ```cpp #include <QPluginLoader> Q_IMPORT_PLUGIN(QJpegPlugin) ``` #### 7. 验证可执行文件 编译后使用ldd检查依赖: ```bash ldd your_app | grep "not found" ``` 若输出为空则表示无外部依赖 #### 常见问题解决方案 1. **字体渲染问题**:需将字体文件打包到资源中 2. **XCB插件缺失**:安装libxcb-xinerama0-dev 3. **商业许可证限制**:确认使用的Qt模块符合LGPL协议要求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值