坑了我2天的麒麟系统下的QT程序打包

开发环境

银河麒麟V10系统,基于QT5.12.8开发。

背景描述

qt基于release模式编译出的可执行程序文件(这里假如二进制文件名为TestBin),对其进行打包(怎么打包这里略,有需要的请留言),以便于制作成安装包,或者直接可以运行的可执行程序。

问题描述

对可执行程序,在终端执行时,报如下错误:
[32706:32739:0221/185810.785973:ERROR:nss_util.cc(674)] Error initializing NSS with a persistent database (sql:/home/mlxz/.pki/nssdb): libsoftokn3.so: 无法打开共享对象文件: 没有那个文件或目录

[32706:32739:0221/185810.786023:ERROR:nss_util.cc(154)] Error initializing NSS without a persistent database: NSS error code: -5925

[32706:32739:0221/185810.786030:FATAL:nss_util.cc(156)] nss_error=-5925, os_error=0
追踪与中断点陷阱 (核心已转储)

银河麒麟bios 银河麒麟bin文件怎么打开_可执行程序

分析问题

从问题的表面看来,这里是找不到库libsoftokn3.so,但是我打包时已将此库打包至当前可执行程序的同级目录下,即可执行程序所在目录是有这个库的。
网上查阅了一些资料,说是~~因为nss库需要重新执行安装,或者秘钥key不对等等,报错信息 “ERROR:nss_util.cc(674)” 指示在Linux环境下使用Qt进行软件打包时,出现了一个与网络安全服务(NSS)相关的错误。NSS是Mozilla的一个项目,用于提供安全相关的功能,如SSL/TLS支持 ~~
以上所说的都不能实际解决此问题。
尝试执行命令:ldd ./TestBin 终端打印出的结果看出,都找得到可执行程序的所有依赖库,并没有出现类似** ..not found..字眼。
所以就很奇怪,程序在qtcreator中能直接运行,但是打包出来的就是不能手动单独运行,所有库都能找到,环境变量设置了也不行。。。差点崩溃。

解决方法

还是从根源下手,既然报的库有问题,就着手替换库,查询了的系统目录下具有的libsoftokn3.so库。

银河麒麟bios 银河麒麟bin文件怎么打开_银河麒麟bios_02

删除打包可执行程序同目录下的libsoftokn3.so库,重新进行拷贝即可。

执行命令1: cp /usr/lib/x86_64-linux-gnu/nss/libsoftokn3.so ./

执行命令2: cp /lib/x86_64-linux-gnu/libnssutil3.so ./

执行命令3: cp /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so ./

到此,问题得到解决。