Deepin系统下,在QT中使用gmssl碰到的问题,记录一下

        deepin v20 系统,想使用gmssl加密库进行数据的加解密操作,开发环境使用QT6.5。

问题1、glibc的版本低,编译运行失败。

             原因:直接下载编译好的gmssl3.1的tar包,解压后如果直接连接到qt工程中,则会出现该问题, 当前使用的deepin系统glibc的版本是 2.28 , 而gmssl需要glibc的是 2.34,因此 编译会出现undefined ref...  错误。

            解决办法:  下载gmssl源码,重新编译、安装即可解决。按官方编译步骤执行即可。

                           1、mkdir   build

                            2、cd build

                            3、 cmake ..

                             4、make

                              5、 make install     (这里之前跳过make test)

问题2:  在编译、安装后, gmssl库和头分别被安装在 /usr/local/lib 和include 下面。

       在代码中include gmss的头文件后,可以编译通过,但执行错误,提示 cannot found gmssl.so.3文件,即找不到gmssl的库。在这里百思不得其解,经过半天的折腾及百度。终于知道是 qt的运行环境变量中未包括 gmssl的库路径,因此需要把这个路径包含进去。

          解决办法: 1、点击左侧栏上的项目配置按钮,打开项目配置界面。

                             2、选择当前编译器下的 “运行” ,打开运行配置界面

                             3、在右侧的界面上,在环境配置一栏,点击右侧的详情,展开环境变量列表,找到  LD_LIBRARY_PATH 一行,

                             4,选择 LD_LIBRARY_PATH 后,点击列表右侧的 “Edit”按钮,弹出编辑框。

                             5、点击“添加”按钮,选择gmssl库的路径,:/usr/local/lib,把这个路径添加进去,然后点击确定,关闭对话框。

   这时候,点击项目的运行按钮,即可成功执行程序。

在这里还有一个问题就是如果在终端或双击点击程序,依然后出现刚才同样的错误,这是因为系统环境变量中没有 LD_LIBRARY_PATH  这个变量或者 没有包含这个路径,需要在.profile文件中添加一行: 

        export   LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/usr/loca/lib

完成后,执行: source .profile  重新加载配置,    

这样终端中可以直接执行该程序了。

OK。记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值