Qt5 链接错误:找不到版本为 "Qt_5" 的库

5

1 问题

我正在尝试在一台运行 Arch Linux 的电脑上从头开始构建开源的 motorcar 项目。Motorcar 是一个 Linux VR 窗口管理器,可与 Oculus Rift D2K 头戴式耳机和 Razer Hydra 控制器配合使用,但实际编译此项目时不需要这些物品。

问题:我无法在我的机器上(Arch Linux)编译 motorcar。我遇到了 Qt5 链接错误(如下所述)。

2 Motorcar 先决条件和构建目标

根据 README,构建 motorcar 需要以下先决条件:

  1. 已编译支持 EGL 和桌面 OpenGL 的 Mesa。
  2. 已编译支持 EGL 和桌面 OpenGL 的 Cairo。
  3. QtWayland 5.5(需要 Qt5.5)。
  4. Wayland(Linux 窗口管理器协议)。

此外,motorcar 项目被分成以下实际构建目标:

  1. libmotorcar-compositor:这是实际的 motorcar 库,用于支持此后的构建目标。
  2. simple-compositor:这是一个简单的 Wayland 组合器,可以从控制台启动。启动后(在您的屏幕上,而不是 VR 头戴式耳机中),您可以在其中启动 3D 窗口程序。
  3. rift-hydra-compositor:与 simple-compositor 相同,只是它具有支持 Oculus Rift D2K 头戴式耳机和 Razer Hydra 控制器的功能。
  4. motorcar-client-demo:这是运行在 simple-compositorrift-hydra-compositor 中的客户端“窗口”。它仅仅是一个旋转的立方体。启动 simple-compositor 后,您应该能够 alt-tab 切换到控制台并运行 motorcar-client-demo,从而在运行的 simple-compositor 中启动 3D 立方体。

3 我如何尝试构建 Motorcar 构建目标(以及我遇到的错误)

我的系统:运行 nvidia 驱动程序的 Arch Linux。

请注意,motorcar 项目提供了一个 build.sh 脚本。我尝试使用它,但它在我的系统上无法工作。因此,我从源代码编译了所有内容。以下是我如何做的(导致最终错误)。

3.1 我如何构建 Mesa

首先,我从mesa下载了mesa-13.0.2.tar.gz。解压缩后,我运行了以下命令:

$ ./configure --prefix=$WLD --enable-gles2 --disable-gallium-egl --with-egl-platforms=x11,wayland,drm --enable-gbm --enable-shared-glapi --with-gallium-drivers=r300,r600,swrast,nouveau --enable-glx-tls # what should $WLD be here? It might have been left blank.
$ make
$ sudo make install

3.2 我是如何构建Cairo的

首先,我从cairo官网下载了LATEST-cairo-1.14.6。解压后,我运行了以下命令:

$ ./configure --prefix=$WLD --enable-xcb=yes --enable-gl=yes -enable-egl=yes # what should $WLD be here? It might have been left blank.
$ make
$ sudo make install

3.3 我如何构建Wayland

我只是使用了我的软件包管理器进行此操作。

$ sudo pacman -S wayland
$ sudo pacman -S weston # in case this is relevant

3.4 我如何构建qtwayland和qt5.5

在这里,我遵循了motorcar的README文档中的指示:

$ cd ~
$ git clone git://code.qt.io/qt/qt5.git qt5
$ cd qt5
$ git checkout 1497a398e34e18abb18f705b2294464840629ca1 # the Qt5 commit hash confirmed to work from the README
$ ./init-repository --no-webkit  --module-subset=qtbase,qtdeclarative,qtwayland # I removed qtjsbackend from the module-subset since it isn't strictly needed

$ cd qtbase
$ git checkout 7010da2e6274febf71db40a535ce1d0c4858f143 # the qtbase commit hash confirmed to work from the README
$ cd ../qtwayland
$ git checkout 3dc9cfdbd2771c28c770d432b99e571db43fe599 # the qtwayland commit hash confirmed to work from the README
$ cd ../
$ ./configure -prefix /opt/qt5  -debug -confirm-license -opensource -egl -opengl -no-xcb-xlib

$ cd qtwayland
$ git clean -fdx
$ ../qtbase/bin/qmake CONFIG+=wayland-compositor
$ cd ../
$ make -j4 # the -j4 flag speeds up make by a factor of 4; otherwise this build takes a LONG time
$ make install

3.5 How I built libmotorcar-compositor

$ cd ~
$ git clone https://github.com/evil0sheep/motorcar.git motorcar
$ /opt/qt5/bin/qmake
$ make

3.6 我尝试构建simple-compositor并失败的过程

$ cd ~/motorcar/src/examples/compositors/simple-compositor
$ make
g++  main.cpp  -std=c++11  -I../../../../src/compositor -I../../../../src/protocol -I../../../../src/device -L../../../../lib -lmotorcar-compositor  -o simple-compositor 
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::primaryScreen()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::setDepthBufferSize(int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWaylandCompositor::QWaylandCompositor(char const*, QFlags<QWaylandCompositor::ExtensionFlag>)'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QTimer::start(int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QMatrix4x4::translate(float, float)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::defaultFramebufferObject() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::resizeEvent(QResizeEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::exec()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::setStencilBufferSize(int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::~QSurfaceFormat()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `qFlagLocation(char const*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::childEvent(QChildEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QMetaObject::Connection::~Connection()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::staticMetaObject@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::metaObject() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::create()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::focusObject() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::setSurfaceType(QSurface::SurfaceType)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::wheelEvent(QWheelEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::accessibleRoot() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLTextureCache::QOpenGLTextureCache(QOpenGLContext*)@Qt_5_PRIVATE_API'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::QSurfaceFormat(QSurfaceFormat const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::focusOutEvent(QFocusEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `non-virtual thunk to QWindow::format() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::addShaderFromSourceCode(QFlags<QOpenGLShader::ShaderTypeBit>, char const*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLTexture::QOpenGLTexture(QImage const&, QOpenGLTexture::MipMapGeneration)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::qt_metacast(char const*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QScreen::geometry() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::~QObject()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::QOpenGLShaderProgram(QObject*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::tabletEvent(QTabletEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::timerEvent(QTimerEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::showEvent(QShowEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::nativeEvent(QByteArray const&, void*, long*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::setGeometry(QRect const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QMatrix4x4::scale(float, float)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::setSwapInterval(int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::installEventFilter(QObject*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::release()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWaylandCompositor::createOutput(QWindow*, QString const&, QString const&)'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QListData::dispose(QListData::Data*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::QOpenGLContext(QObject*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::create()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::height() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QTimer::~QTimer()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QDateTime::currentMSecsSinceEpoch()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::eventFilter(QObject*, QEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QCoreApplication::self@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::screens()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::hideEvent(QHideEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::disconnectNotify(QMetaMethod const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QCursor::~QCursor()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QCursor::QCursor(QPixmap const&, int, int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLTexture::textureId() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::~QImage()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::qt_metacall(QMetaObject::Call, int, void**)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::functions() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObjectData::dynamicMetaObject() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::setFormat(QSurfaceFormat const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWaylandCompositor::openUrl(QWaylandClient*, QUrl const&)'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QScreen::refreshRate() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::keyPressEvent(QKeyEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::changeOverrideCursor(QCursor const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::qt_metacast(char const*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::setUniformValue(int, QMatrix4x4 const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::mouseReleaseEvent(QMouseEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::QImage()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::mouseDoubleClickEvent(QMouseEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::event(QEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::isExposed() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::convertToFormat_helper(QImage::Format, QFlags<Qt::ImageConversionFlag>) const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::surfaceHandle() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::qt_metacall(QMetaObject::Call, int, void**)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QListData::detach(int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::moveEvent(QMoveEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::sender() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `typeinfo for QWindow@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::mousePressEvent(QMouseEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QString::fromAscii_helper(char const*, int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::event(QEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::QWindow(QScreen*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLTexture::~QOpenGLTexture()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `non-virtual thunk to QWindow::surfaceType() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QPixmap::~QPixmap()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::bind()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::width() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::queryKeyboardModifiers()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::mouseMoveEvent(QMouseEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::keyReleaseEvent(QKeyEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `non-virtual thunk to QWindow::surfaceHandle() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QMetaObject::cast(QObject*) const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::makeCurrent(QSurface*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::exposeEvent(QExposeEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::~QWindow()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::attributeLocation(char const*) const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QImage::constBits() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QArrayData::deallocate(QArrayData*, unsigned long, unsigned long)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::setOverrideCursor(QCursor const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::format() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `qt_assert(char const*, char const*, int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLShaderProgram::uniformLocation(char const*) const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::showFullScreen()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::currentContext()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QSurfaceFormat::QSurfaceFormat()@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::surfaceType() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QTimer::QTimer(QObject*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::focusInEvent(QFocusEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::geometry() const@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QWindow::setFormat(QSurfaceFormat const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::connectNotify(QMetaMethod const&)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QOpenGLContext::swapBuffers(QSurface*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::customEvent(QEvent*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QGuiApplication::QGuiApplication(int&, char**, int)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `QObject::QObject(QObject*)@Qt_5'
../../../../lib/libmotorcar-compositor.so: undefined reference to `typeinfo for QObject@Qt_5'
collect2: error: ld returned 1 exit status
make: *** [Makefile:14: compositor] Error 1

3.7 我如何找到与libmotorcar-compositor.so相关的Qt5链接错误

以上输出结果让我发现,与libmotorcar-compositor库相关的存在一个内部链接错误,如下所示(请注意错误的前三行):

$ cd ~/motorcar/lib
$ ls
libmotorcar-compositor.so  libmotorcar-compositor.so.1  libmotorcar-compositor.so.1.0  libmotorcar-compositor.so.1.0.0
$ ldd libmotorcar-compositor.so
./libmotorcar-compositor.so: /opt/qt5/lib/libQt5Core.so.5: version `Qt_5' not found (required by ./libmotorcar-compositor.so)
./libmotorcar-compositor.so: /opt/qt5/lib/libQt5Gui.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libmotorcar-compositor.so)
./libmotorcar-compositor.so: /opt/qt5/lib/libQt5Gui.so.5: version `Qt_5' not found (required by ./libmotorcar-compositor.so)
    linux-vdso.so.1 (0x00007ffcb60c9000)
    libQt5Widgets.so.5 => /opt/qt5/lib/libQt5Widgets.so.5 (0x00007f6084efa000)
    libQt5Compositor.so.5 => /opt/qt5/lib/libQt5Compositor.so.5 (0x00007f6084e1a000)
    libQt5Quick.so.5 => /opt/qt5/lib/libQt5Quick.so.5 (0x00007f60848f2000)
    libQt5Qml.so.5 => /opt/qt5/lib/libQt5Qml.so.5 (0x00007f60842dc000)
    libQt5Network.so.5 => /opt/qt5/lib/libQt5Network.so.5 (0x00007f6084133000)
    libQt5Gui.so.5 => /opt/qt5/lib/libQt5Gui.so.5 (0x00007f6083a84000)
    libQt5Core.so.5 => /opt/qt5/lib/libQt5Core.so.5 (0x00007f60834c6000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f608322a000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f608300d000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f6082c85000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007f6082981000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f608276a000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007f60823ca000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f6082178000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f6081e65000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f6081c53000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f6081914000)
    libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x00007f6081701000)
    libxkbcommon.so.0 => /usr/lib/libxkbcommon.so.0 (0x00007f60814bf000)
    librt.so.1 => /usr/lib/librt.so.1 (0x00007f60812b7000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007f60810a1000)
    libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f6080e6b000)
    libicui18n.so.57 => /usr/lib/libicui18n.so.57 (0x00007f60809f1000)
    libicuuc.so.57 => /usr/lib/libicuuc.so.57 (0x00007f6080647000)
    libicudata.so.57 => /usr/lib/libicudata.so.57 (0x00007f607ebcb000)
    libpcre16.so.0 => /usr/lib/libpcre16.so.0 (0x00007f607e962000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f607e75e000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f607e55c000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x00005591851f1000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f607e332000)
    libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007f607e12d000)
    libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007f607df2a000)
    libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007f607dd23000)
    libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007f607db20000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f607d8f1000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f607d6ee000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f607d4e6000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f607d2e4000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f607d0bb000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f607ce9f000)
    libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007f607cc9a000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f607ca94000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f607c882000)
    libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f607c679000)
    libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f607c406000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f607c202000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f607bffc000)

1
在哪个操作系统上?你是如何安装Qt的?难道你不能使用二进制包(例如,大多数Linux发行版都打包了Qt5)吗?为什么需要从源代码编译Qt(如果你确实需要,一定要选择最新的版本)。 - Basile Starynkevitch
Arch Linux。我一直在使用源代码编译Qt5,并支持EGL。因为我需要EGL支持,所以我不能只使用我的repo中的标准二进制包。 - George
你应该编辑和改进你的问题,而不是评论它。我怀疑你在Qt安装过程中犯了一些错误。你运行了 ldconfig 吗? - Basile Starynkevitch
1个回答

1
尝试将Qt的bin目录添加到PATH,将lib目录添加到LD_LIBRARY_PATH中:
export PATH=/opt/qt5/bin:$PATH
export LD_LIBRARY_PATH=/opt/qt5/lib:$LD_LIBRARY_PATH

我相信您可能已经将您的shared-object.so库与/opt/qt5/lib/libQt5Core.so显式链接,但由于它依赖于其他Qt库并且找不到它们,所以您会遇到错误。以上的调整可能会解决这个问题。
另请参阅:

原则上,我需要重新构建项目才能尝试这个(无论如何我都必须从头开始重建项目,我只是好奇)? - George
不,只需将其放入终端并尝试重新运行您的程序。当然,请确保Qt可执行文件实际存在于/opt/qt5/bin中,并且Qt库位于/opt/qt5/lib中。如果有效,则可以将这两行附加到您的.bashrc(或任何您正在使用的shell的rc文件)中,在每个会话中加载它们。 - Ivan Aksamentov - Drop
好的。项目正在重新编译(大约需要一个小时)。我会在这里报告结果。感谢您的帮助。 - George
我按照您的建议更改了PATHLD_LIBRARY_PATH变量,但仍然收到相同的错误。感谢您的建议,但它没有起作用 :( - George
如果您能帮我解决这个特别棘手的错误,我会给予比目前50加仑更高的赏金。 - George
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接