开网站的是啥公司婚礼策划网站模板中文
news/
2025/9/28 15:06:20/
文章来源:
开网站的是啥公司,婚礼策划网站模板中文,企业融资的三个渠道,短视频推广平台有哪些准备工作#xff1a;
项目/可执行文件名#xff1a;QTAppName
打包项目存放的文件名#xff1a;pack#xff08;这个文件名无所谓#xff09;
脚本名#xff1a;
copylib.sh#xff08;类似ldd命令#xff09;#xff1a;用于将.so库文件的依赖项复制并放入自动生…准备工作
项目/可执行文件名QTAppName
打包项目存放的文件名pack这个文件名无所谓
脚本名
copylib.sh类似ldd命令用于将.so库文件的依赖项复制并放入自动生成的 “lib文件” 中。
QTAppName.sh(注该脚本名为可执行文件名.sh)“用于最后执行可执行文件的脚本
将Qt项目使用Release模式编译运行一遍确保生成可执行文件 QTAppName脚本编写
copylib.sh
#!/bin/bash
LibDir$PWD/lib
Target$1lib_array($(ldd $Target | grep -o /.* | grep -o /.*/[^[:space:]]*))$(mkdir $LibDir)
for Variable in ${lib_array[]}
docp $Variable $LibDir
doneQTAppName.sh
#!/bin/sh
appnamebasename $0 | sed s,\.sh$,,dirnamedirname $0
tmp${dirname#?}if [ ${dirname%$tmp} ! / ]; then
dirname$PWD/$dirname
fi
LD_LIBRARY_PATH$dirname
export LD_LIBRARY_PATH
$dirname/$appname $权限给予
chmod 777 copylib.sh QTAppName.sh
开始打包 获得可执行文件的依赖
将copylib.sh拷贝进对应项目的构建/build目录例如build-SmartCheckImgWidget_4_3-Desktop_Qt_5_15_2_GCC_64bit-Release在Terminal中输入./copylib.sh QTAppName将① QTAppName的可执行程序、② lib文件夹里面全部的文件**不是直接复制lib文件夹是文件夹的内容** 复制到 pack文件夹中复制完毕后将lib文件夹删除即可。 获取Qt依赖
进入Qt的安装目录并将copylib.sh拷贝qt中的platforms目录下我的目录/opt/Qt/5.15.2/gcc_64/plugins/platforms。执行 ./copylib.sh libqxcb.so注xcb是移植的重要文件如果拷贝错误将不能在目标主机运行。回到plugins(platforms的上级目录)将platforms整个文件夹拷贝到pack将libqxcb.so依赖库文件夹内pack/platforms/lib/*的东西全部放到pack目录下可能会有重复项替换即可。并删除pack/platforms/lib文件夹及其所属文件。最后记得将原来Qt/5.15.2/gcc_64/plugins/platform/lib也删除了虽然不删除也没啥事 其他 扫尾工作
若是还有其他依赖项目如所编写的程序有操作数据库的动作还需要将与platforms同级目录中的sqldrivers文件夹也拷贝到“pack文件夹”中
QTAppName.sh放入pack并使用 ./QTAppName.sh 调用测试是否成功
可能问题
问题一打包后在其他设备上尝试 ./QTAppName.sh 运行报错Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion nlist 1‘ failed!
解决方案该问题大概率是由libc该库是linux底层的一个基本库的版本不一致导致的可以使用以下命令查看libc版本
ldd --version若是版本不一致可以尝试更新libc6,但是并不推荐该方法因为这是一个底层库这样做可能有风险且该库的高版本并不一定兼容低版本手动安装指定版本系统可能会在安装的过程中崩溃。
sudo apt-get update
sudo apt-get install libc6**推荐方法**使打包主机和运行的环境主机的版本号不是内核版本一致且没有更新过
cat /etc/os-release //可以查看发行版本问题二依赖缺失
解决方案
模块缺失在上文的开始打包中仿照Qt依赖项的获取添加对应的依赖即可.so库的依赖缺失使用ldd命令查看库的依赖情况
ldd 依赖库名.so决方案
模块缺失在上文的开始打包中仿照Qt依赖项的获取添加对应的依赖即可.so库的依赖缺失使用ldd命令查看库的依赖情况
ldd 依赖库名.so尝试使用find查询打包主机上对应依赖项并添加
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920755.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!