gpt4 book ai didi

c++ - Mingw32 无法静态链接到 libgcc_s_dw2-1、libstdc++-6、libwinpthread-1 (Qt 5.7.1)

转载 作者:行者123 更新时间:2023-12-02 10:31:10 25 4
gpt4 key购买 nike

在使用 mingw32 编译时,我正在努力解决与 libgcc_s_dw2-1、libstdc++-6、libwinpthread-1 库进行静态链接的问题。
使用 -static-libgcc -static-libstdc++ -static -lwinpthread 设置项目如果我构建一个独立的应用程序,标志会有所帮助。但是当我将 Qt 5.7.1 用于 mingw32 编译器时,它并没有帮助。应用程序不会开始提示缺少这些库!

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

project(dummyapp LANGUAGES CXX)

find_package(Qt5 REQUIRED COMPONENTS Core)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++ -static -lwinpthread")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

add_executable(app
app.cpp)

target_link_libraries(app
PRIVATE
Qt5::Core
)

add_custom_command(TARGET app PRE_LINK
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:app>
)

应用程序.cpp
#include <iostream>
#include <QVariant>

int main(int argc, const char **argv)
{
std::cout << "Hello dummy!" << std::endl;

QVariant var{};

std::cin.get();

return 0;
}

我怀疑,这种行为的原因是 Qt 本身是动态链接到这些库的。

解决办法是什么?有补救措施吗?如果没有,我如何在构建时自动部署这些库?

最佳答案

如果您的构建及其依赖项不是静态的,则这些 DLL 需要与您的应用程序一起分发。
文章在 https://lwn.net/Articles/549573/解释了 libstdc++-6 DLL 可以在没有许可问题的情况下分发。

关于c++ - Mingw32 无法静态链接到 libgcc_s_dw2-1、libstdc++-6、libwinpthread-1 (Qt 5.7.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62193206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com