Qt Creater怎么编译出静态连接的程序

Qt Creater怎么编译出静态连接的程序,第1张

Qt默认的编译方式是动态编译的,但是有时候编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译程序,Qt要实现静态编译必须库文件也是静态编译的,可以用这个命令编译静态库:

1.将C:\Qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

改为

QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

2.在开始菜单里找到Qt Command Prompt并运行,输入命令: configure -static -debug-and-release -no-exceptions -L "C:\Qt\2010.05\qt\include" -L "C:\Qt\2010.05\qt\lib"

-L指定一下路径,防止用到vc的头文件

选择开源:O;选择license:y;

3.上一条命令运行成功后再输入命令: mingw32-make sub-src

等1 ~3 小时可能就运行完了 完成后就可以了。

您好,希望以下回答能帮助您

使用Release 模式编译后,release 的目录下包含 Hello1.exe 可执行程序。如果我们需要发布这个程序,那么还需要 QT 的运行库,包括哪些呢?拿一台干净的机器一个个试,终于把这些 Qt 库给找出来,成功运行 QtCore4.dll QtGui4.dll mingwm10.dll libgcc_s_dw2-1.dll 其中要特别注意的是,这些文件应该从 Qt 安装目录下的 [QT安装目录]\qt\bin 子目录中获取,因为[QT安装目录]\bin 也有同样的文件,但是无效。这里仅限 Windows 系统,其他非 Windows 系统尚未研究。不过也碰到一个小问题, Hello1 程序中有这么一行代码:QStringgbk_msg=codec->toUnicode("你确认要退出HelloQt程序吗?

1、linux下复制qt release模式生成的可执行文件到桌面的新建目录。

2、编写脚本文件ldd.sh 作用:导出可执行程序运行时所需要的库文件 点击下载。

3、执行 ./ldd.sh + 可执行程序 在当前的文件夹下生成lib文件。复制lib下的库文件 与可执行文件同级目录。

4、到Qt安装目录里 找到platform文件夹 我的目录是 /opt/Qt5.7.0/5.7/gcc_64/plugins/platforms 复制此文件夹与可执行文件同级目录。

5、复制ldd.sh到platforms文件夹内,执行 ./ldd.sh libqxcb.so 将生成的lib目录下的库文件拷贝至可执行文件同级目录。删除platforms里的lib文件。

6、执行下载到的脚本文件 ./app.sh

注:app.sh与可执行文件同名。在windows下写的脚本文件 在linux下使用是出现 /bin/bash^M: bad interpreter:没有那个文件或目录 解决办法

vim 打开脚本文件 :set ff? 显示 ff=dos 修改成 :set ff=unix :wq保存退出即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8095569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存