无法在Linux

时间:2017-05-15 15:35:46

标签: c++ linux qt qt5

当我尝试加载存储在与二进制文件相同的目录中的特定库时,出现错误:

  

无法加载库uuirtdrv.so :( uuirtdrv.so:无法打开共享   目标文件:没有这样的文件或目录)

但仅限于Linux,而不是Windows。在窗户上,它就像一个魅力。

QMAKE

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

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:无法打开共享对象文件:没有这样的文件或目录)&#34;

1 个答案:

答案 0 :(得分:1)

  

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