linux - 带有 CMake 的 Qt 应用程序中的静态链接库

标签 linux qt cmake qt5 static-linking

我正在尝试使用 CMake 使用静态库构建 Qt5 应用程序,但我不知道如何静态链接文件。我已经坚持了几个小时并试图在谷歌上找到任何线索,但没有运气。
CMakeLists.txt:

cmake_minimum_required(VERSION 3.9 FATAL_ERROR)   

project (myDemo VERSION 0.1 LANGUAGES CXX)

### Didn't make any difference:
###set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
   
set (myDemo_VERSION_MAJOR 1)    
set (myDemo_VERSION_MINOR 0)

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)    
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})    
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/installation)

set(CMAKE_AUTOMOC ON)

set(SOURCES ${PROJECT_SOURCE_DIR}/src)

#### This made the build process reach 100%, but still exiting with the same error message
###set(Qt5_USE_STATIC_LIBS ON)    
###set(Qt5_USE_STATIC_RUNTIME ON)

# Find the necessary qt libraries    
find_package(Qt5 COMPONENTS Gui Quick Qml Multimedia)

if ( NOT Qt5_FOUND )    
 message(FATAL_ERROR "Package QT not found!")    
endif( )

# add the executable    
add_executable(myDemo src/main.cpp     
    src/somefile.cpp     
    src/somefile.h )

target_include_directories(myDemo PRIVATE Qt5_DIR)    
target_compile_features(myDemo PUBLIC cxx_std_17)     

target_link_libraries (myDemo Qt5::Gui Qt5::Qml Qt5::Quick Qt5::Multimedia ${ADDITIONAL_LIBRARIES} -static)      

install (TARGETS myDemo DESTINATION bin)
cmake命令退出没有错误,但 make命令退出并显示以下错误消息:

/usr/bin/ld: attempted static link of dynamic object `/opt/qt5/lib/libQt5Quick.so.5.9.1'

collect2: error: ld returned 1 exit status

CMakeFiles/myDemo.dir/build.make:204: recipe for target '../bin/myDemo' failed

make[2]: *** [../bin/myDemo] Error 1

CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/myDemo.dir/all' failed

make[1]: *** [CMakeFiles/myDemo.dir/all] Error 2

Makefile:129: recipe for target 'all' failed

make: *** [all] Error 2


我在美德机器上运行 Ubuntu,应用程序是用 QML/Qt (5.9) 实现的。我正在使用 Virtual Studio Code(而不是 Qt Creator)。
我之前没有使用 CMake 的经验。
有没有人知道如何链接静态 Qt 库?
编辑
问题可能是我有 Qt 的开源版本。是否可以解释开源版本不支持静态构建?

最佳答案

首先注意这个项目https://github.com/siavashk/qt5-static-hello-world但感觉它可能只在 MacOS 上成功过。注释掉 set(QT_EXTRA_LIBS ...线在 DoQtMess.cmakeQ_IMPORT_PLUGIN(QCocoaIntegrationPlugin)线在 main.cpp ,它现在在运行 cmake 后在 Linux 中为我构建和运行没有任何特定于静态的参数。但是,我可以看到(使用 ldd )它动态链接到我系统的 Qt 安装。
我可以通过调用 cmake 来使用不同的 Qt 安装作为:

$ export CMAKE_PREFIX_PATH="/path/to/other/qt/lib/cmake/Qt5"
$ cmake ..
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/qt5-static-hello-world-master/build
$ make -j 24
Scanning dependencies of target helloworld_autogen
[ 12%] Automatic MOC for target helloworld
[ 12%] Built target helloworld_autogen
[ 25%] Generating qrc_resources.cpp
[ 37%] Generating ui_mainwindow.h
Scanning dependencies of target helloworld
[ 50%] Building CXX object CMakeFiles/helloworld.dir/qrc_resources.cpp.o
[ 62%] Building CXX object CMakeFiles/helloworld.dir/helloworld_autogen/mocs_compilation.cpp.o
[ 75%] Building CXX object CMakeFiles/helloworld.dir/mainwindow.cpp.o
[ 87%] Building CXX object CMakeFiles/helloworld.dir/main.cpp.o
[100%] Linking CXX executable helloworld
[100%] Built target helloworld
$ ldd helloworld
        linux-vdso.so.1 (0x00007fff6a3f4000)
        libQt5Widgets.so.5 => /lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f7e57460000)
        libQt5Gui.so.5 => /lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f7e56e75000)
        libQt5Core.so.5 => /lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f7e5692c000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7e5674a000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e5672f000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e5653b000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e563ec000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7e563c9000)
        libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f7e56341000)
        libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f7e56309000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7e562ed000)
        libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f7e561e6000)
        libicui18n.so.66 => /lib/x86_64-linux-gnu/libicui18n.so.66 (0x00007f7e55ee7000)
        libicuuc.so.66 => /lib/x86_64-linux-gnu/libicuuc.so.66 (0x00007f7e55d01000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7e55cfb000)
        libpcre2-16.so.0 => /lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f7e55c78000)
        libdouble-conversion.so.3 => /lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007f7e55c62000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f7e55b37000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7e57b3e000)
        libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f7e55a7f000)
        libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f7e55a4b000)
        libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f7e5598c000)
        libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f7e5595f000)
        libicudata.so.66 => /lib/x86_64-linux-gnu/libicudata.so.66 (0x00007f7e53e9c000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7e53e29000)
        libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f7e53cec000)
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f7e53cc2000)
        libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f7e53cbc000)
        libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f7e53cb2000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f7e53c98000)

ldd的输出确认它将链接到那些 .so的。
使用相同的程序但指向 CMAKE_PREFIX_PATH在静态编译的安装树中,肯定编译了更多文件:
cmake ..; make -j 24
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/qt5-static-hello-world-master/build
Scanning dependencies of target helloworld_autogen
[  2%] Automatic MOC for target helloworld
[  2%] Built target helloworld_autogen
[  4%] Generating ui_mainwindow.h
[  7%] Generating qrc_resources.cpp
Scanning dependencies of target helloworld
[  9%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QEglFSEmulatorIntegrationPlugin_Import.cpp.o
[ 11%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QEglFSKmsEglDeviceIntegrationPlugin_Import.cpp.o
[ 14%] Building CXX object CMakeFiles/helloworld.dir/helloworld_autogen/mocs_compilation.cpp.o
[ 16%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWaylandEglPlatformIntegrationPlugin_Import.cpp.o
[ 19%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QTiffPlugin_Import.cpp.o
[ 21%] Building CXX object CMakeFiles/helloworld.dir/main.cpp.o
[ 23%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QICOPlugin_Import.cpp.o
[ 26%] Building CXX object CMakeFiles/helloworld.dir/mainwindow.cpp.o
[ 30%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QEglFSKmsGbmIntegrationPlugin_Import.cpp.o
[ 28%] Building CXX object CMakeFiles/helloworld.dir/qrc_resources.cpp.o
[ 33%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QEglFSX11IntegrationPlugin_Import.cpp.o
[ 38%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QICNSPlugin_Import.cpp.o
[ 38%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QGifPlugin_Import.cpp.o
[ 40%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QSvgIconPlugin_Import.cpp.o
[ 45%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QSvgPlugin_Import.cpp.o
[ 45%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QJpegPlugin_Import.cpp.o
[ 47%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QTgaPlugin_Import.cpp.o
[ 50%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_DrmEglServerBufferPlugin_Import.cpp.o
[ 52%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandBradientDecorationPlugin_Import.cpp.o
[ 54%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandEglClientBufferPlugin_Import.cpp.o
[ 57%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandFullScreenShellV1IntegrationPlugin_Import.cpp.o
[ 59%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandIviShellIntegrationPlugin_Import.cpp.o
[ 61%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandXCompositeEglClientBufferPlugin_Import.cpp.o
[ 64%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandWlShellIntegrationPlugin_Import.cpp.o
[ 66%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandXCompositeGlxClientBufferPlugin_Import.cpp.o
[ 69%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandXdgShellIntegrationPlugin_Import.cpp.o
[ 71%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandXdgShellV5IntegrationPlugin_Import.cpp.o
[ 73%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_QWaylandXdgShellV6IntegrationPlugin_Import.cpp.o
[ 76%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_ShmServerBufferPlugin_Import.cpp.o
[ 78%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5WaylandClient/Qt5WaylandClient_VulkanServerBufferPlugin_Import.cpp.o
[ 80%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWaylandIntegrationPlugin_Import.cpp.o
[ 85%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWaylandXCompositeGlxPlatformIntegrationPlugin_Import.cpp.o
[ 85%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWaylandXCompositeEglPlatformIntegrationPlugin_Import.cpp.o
[ 88%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWbmpPlugin_Import.cpp.o
[ 90%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QXcbEglIntegrationPlugin_Import.cpp.o
[ 92%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QWebpPlugin_Import.cpp.o
[ 95%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QXcbGlxIntegrationPlugin_Import.cpp.o
[ 97%] Building CXX object CMakeFiles/helloworld.dir/opt/Qt5.15.5-static/lib/cmake/Qt5Gui/Qt5Gui_QXcbIntegrationPlugin_Import.cpp.o
[100%] Linking CXX executable helloworld
[100%] Built target helloworld
是的 ldd 的输出确认没有对动态 Qt 库的引用(至少在启动时没有)。
$ ldd helloworld
        linux-vdso.so.1 (0x00007fffa0d84000)
        libgbm.so.1 => /lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f51f45cb000)
        libjpeg.so.8 => /lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f51f4546000)
        libtiff.so.5 => /lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f51f44c5000)
        libxcb-glx.so.0 => /lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f51f44a8000)
        libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f51f4494000)
        libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f51f448d000)
        libxcb-icccm.so.4 => /lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007f51f4486000)
        libxcb-image.so.0 => /lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007f51f4281000)
        libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f51f427c000)
        libxcb-keysyms.so.1 => /lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f51f4277000)
        libxcb-randr.so.0 => /lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007f51f4264000)
        libxcb-render-util.so.0 => /lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007f51f425b000)
        libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f51f424c000)
        libxcb-shape.so.0 => /lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f51f4247000)
        libxcb-sync.so.1 => /lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f51f423d000)
        libxcb-xfixes.so.0 => /lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f51f4233000)
        libxcb-xinerama.so.0 => /lib/x86_64-linux-gnu/libxcb-xinerama.so.0 (0x00007f51f422e000)
        libxcb-xkb.so.1 => /lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f51f420e000)
        libxcb-xinput.so.0 => /lib/x86_64-linux-gnu/libxcb-xinput.so.0 (0x00007f51f41ea000)
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f51f41c0000)
        libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007f51f41b5000)
        libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007f51f4197000)
        libxkbcommon-x11.so.0 => /lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007f51f418c000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f51f415d000)
        libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f51f4158000)
        libEGL.so.1 => /lib/x86_64-linux-gnu/libEGL.so.1 (0x00007f51f4143000)
        libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f51f413e000)
        libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f51f4001000)
        libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f51f3fba000)
        libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f51f3ef9000)
        libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f51f3eee000)
        libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f51f3edd000)
        libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f51f3e55000)
        libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f51f3e1d000)
        libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f51f3d18000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f51f3cfa000)
        libdouble-conversion.so.3 => /lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007f51f3ce4000)
        libicui18n.so.66 => /lib/x86_64-linux-gnu/libicui18n.so.66 (0x00007f51f39e5000)
        libicuuc.so.66 => /lib/x86_64-linux-gnu/libicuuc.so.66 (0x00007f51f37ff000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f51f37f9000)
        libpcre2-16.so.0 => /lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f51f3776000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f51f364b000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f51f3628000)
        libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f51f35e6000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f51f3404000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f51f32b5000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f51f329a000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f51f30a6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f51f57af000)
        libwayland-server.so.0 => /lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007f51f3090000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f51f3062000)
        libwebp.so.6 => /lib/x86_64-linux-gnu/libwebp.so.6 (0x00007f51f2ff8000)
        libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f51f2f4f000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f51f2f26000)
        libjbig.so.0 => /lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f51f2d16000)
        libxcb-util.so.1 => /lib/x86_64-linux-gnu/libxcb-util.so.1 (0x00007f51f2b10000)
        libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f51f2b0a000)
        libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f51f2b02000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f51f2af9000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f51f2add000)
        libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f51f2a25000)
        libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007f51f2a19000)
        libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f51f29e5000)
        libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f51f29b8000)
        libicudata.so.66 => /lib/x86_64-linux-gnu/libicudata.so.66 (0x00007f51f0ef5000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f51f0e82000)
这是一个重要的收获:在我看来,在 Qt-cmake 集成/构建支持工作中的某个地方,现在比以前容易多了。也就是说,当我尝试使用 Qt 5.12 执行此操作时,我最终插入了很多 Q_IMPORT_PLUGIN线,这是一个反复试验的过程,以确定哪些是需要的。所以,我要说静态链接 Qt 的第一步是使用 5.15 版。
最重要的是,它实际上按预期运行!

关于linux - 带有 CMake 的 Qt 应用程序中的静态链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034540/

相关文章:

linux - awk 和复杂 find 的输出错误

linux - 如何将数百个文件从多个子目录传递到 cat?

python - 如何使用 QTableView 创建列标题及其标签

c++ - 使用静态成员时出现链接器错误

c++ - 构建 Dakota 时配置错误

linux - 通过终端获取网站IP地址

mysql - 无法通过 ODBC 从 Windows 10 连接到 Linux MySQL DB

c++ - 如何以编程方式阻止/允许访问工作站(windows)

c++ - Qt - 这些代码片段是什么意思

windows - 带有额外模块的 Opencv 3.1.0 抛出 DLL 加载失败错误