首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在linux上打开QLibrary

无法在linux上打开QLibrary
EN

Stack Overflow用户
提问于 2017-05-15 15:35:45
回答 1查看 570关注 0票数 0

当我试图加载存储在与二进制文件相同的目录中的特定库时,我会得到一个错误:

无法加载库uuirtdrv.so:(uuirtdrv.so:无法打开共享对象文件:没有此类文件或目录)

但只在linux上,而不是在windows上。在窗户上,它就像一种魅力。

QMake

代码语言:javascript
复制
QT += core serialport
QT -= gui

CONFIG += c++11

TARGET = serial-test
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

win32 {
    dll.files += $$PWD/uuirtdrv.dll
    dll.path = $$OUT_PWD
    INSTALLS += dll
 }

unix {
    so.files += $$PWD/uuirtdrv.so
    so.path = $$OUT_PWD
    INSTALLS += so
 }

QMake将库复制到目标目录。

main.cpp

代码语言:javascript
复制
if (!QLibrary::isLibrary("uuirtdrv.so"))
{
    qDebug() << "uuirtdrv does not exist.";
}

qDebug() << "Loading uuirtdrv";

QLibrary hinstLib;
hinstLib.setFileName("uuirtdrv.so");

if (hinstLib.load()) qDebug() << "uuirtdrv loaded.";
else qDebug() << hinstLib.errorString();

main.cpp所做的就是检查库是否存在,然后尝试加载它。不知道这到底是怎么回事。我需要将.so放到特定的目录中吗?(文档中提到了linux上的LD_LIBRARY_PATH。)

编辑:当我添加一个绝对路径而不是相对路径时,会发生以下错误:

无法加载库/media/sf_Qt/build-serial-test-Desktop-Debug/uuirtdrv.so:(libstdc++.so.5:无法打开共享对象文件:没有此类文件或目录)“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-15 17:19:02

libstdc++.so.5:无法打开共享对象文件:没有这样的文件或目录

请安装libstdc++5 : Fedora,CentOS→# yum install compat-libstdc++-33

新Fedora:# dnf install compat-libstdc++-33

Debian,Ubuntu:apt-get install libstdc++5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43983501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档