【发布时间】:2018-05-03 11:29:39
【问题描述】:
我想将 Qt 库静态链接到我的程序,以便它可以在我的学校计算机上运行。我们没有在这些计算机上安装任何东西的权限,因此静态链接是我唯一的机会。
到目前为止,这是我的 cmake 文件
cmake_minimum_required(VERSION 3.9)
project(Calculator)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Wextra -std=gnu++14 -no-pie -fPIC -static -lQt5Widgets -lQt5Gui -lQt5Core")
find_package(Qt5Widgets REQUIRED)
include_directories(/usr/include/qt/QtWidgets /usr/include/qt /usr/include/qt/QtGui /usr/include/qt /usr/include/qt/QtCore /usr/include/qt)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
add_executable(${PROJECT_NAME} main.cpp calculator.cpp resources.qrc calculatestring.cpp )
这是我尝试运行此 cmake 文件时得到的结果:-
/bin/ld: cannot find -lQt5Widgets
/bin/ld: cannot find -lQt5Gui
/bin/ld: cannot find -lQt5Core
如果我删除 -static 标志,它可以正常编译,但只能在安装了 qt 的机器上运行。
当我尝试在没有安装 qt 的 Arch Linux 的 VirtualMachine 上运行它时,它给了我错误:-
error while loading shared libraries : libQt5Widgets.so.5: cannot open shared file: No such file or directory
我希望(别无选择)运行我的程序,而无需在这些机器上安装 Qt。
编辑:-
被比作可能重复的问题显示了如何与 Qmake 链接。我正在使用 cmake 。而且我的问题不仅限于 Qt。
【问题讨论】:
-
@KYL3R 我正在使用 cmake 而我的问题不是 Qmake 。
-
在本例中,您的问题仅限于 Qt。 Qt 在静态链接方面有点特殊,所以我建议你走官方路径。
标签: c++ qt static-linking