undefined reference to symbol 'dlclose@@GLIBC_2.2.5'(Qt 调用静态库从mac换到ubuntu 16.04.10报错)

说明

在pro文件里面使用:LIBS +=-L$$PWD/Qssh/lib -lQSsh
这样写的时候在mac上可以正常运行,但是在ubuntu上运行就会报错(libQSsh.a请自行换成linux版本的)

Issies在这里插入图片描述

编译器输出

/usr/bin/ld: /home/archermind/Desktop/baidu/cute_view/Qssh/lib/libQSsh.a(botan.o): undefined reference to symbol ‘dlclose@@GLIBC_2.2.5’
Makefile:687: recipe for target ‘cute_view’ failed
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

解决思路

有人说加个-ldl即可.这个某些情况下是对的.
还有一种情况,就是链接库有问题.比如本案例中,需要链接-lQSsh,结果没有libQSsh.so,却有libQSsh.a,于是什么都链接不上.

解决方法

综合网络上多种方法,单独使用均失败了。将多种方法结合起来使用:
在配置文件pro中,将linux与mac区分开,mac依旧使用旧的(如下macx);ubuntu则使用下面unix(加粗部分)

macx {
LIBS += -framework IOKit
LIBS +=-L$$PWD/Qssh/lib -lQSsh
LIBS +=-L /usr/local/lib /usr/local/lib/libprotobuf.a
}

unix {
LIBS +=-L /usr/local/lib /usr/local/lib/libprotobuf.a $$PWD/Qssh/lib/libQSsh.a -ldl -lrt -lm
}

参考
https://blog.csdn.net/u013492463/article/details/53213841
https://blog.csdn.net/quantum7/article/details/88908429

发布了48 篇原创文章 · 获赞 11 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览