gcc - 在编译文件中包含 mingw 库

标签 gcc cmake mingw static-linking libgcc

我正在使用 cmake 生成一个 Eclipse CDT MinGW 项目。 (Eclipse 版开普勒)

这是我的 Cmakelist:

project(IMGTODICOM)

find_package(ITK REQUIRED)

include(${ITK_USE_FILE})

add_executable(IMGTODICOM IMGTODICOM.cxx)

target_link_libraries(IMGTODICOM ITKReview ${ITK_LIBRARIES})

代码在我的电脑上编译和运行没有问题,但在其他电脑上它不运行。一些 dll 像 libgcc_s_dw2-1.dll是必要的。我在我的电脑中寻找这个 dll,我在 C:\MinGW\bin 中找到了它。 .为了解决这个问题,我把这个文件夹的内容复制到另一台电脑上,exe文件终于运行了。
但是,我想知道是否有更好的方法可以在编译过程中添加这些库的任何 Windows pc 中运行 exe 文件。

我正在阅读,我应该使编译器链接到静态库。在 Eclipse 中,我尝试在 properties>C/C++ Include Path and Symbols 和 project Path>Libraries 下添加 dll,但它不起作用。我试图修改 CmakeList 但它也不起作用。

我不知道为什么会出现这个问题以及如何包含 C:\MinGW\bin 的内容在exe文件中。

非常感谢您的帮助

最佳答案

是的,有办法。对于纯 C 代码:

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static")

对于 C++ 代码:
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")

关于gcc - 在编译文件中包含 mingw 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450722/

相关文章:

c++ - Qt/GCC : Returning an object/nullptr from a function by value. 为什么这段代码可以编译?

cmake - 简单的 find_package 配置文件示例

linux - 交叉编译时避免头文件冲突

c++ - 使用 MinGW/MSYS 遍历 Win32 API 堆栈?

c++ - 交叉编译qt(linux/mingw -> windows): various undefined references

c - gcc没有优化模算术?

iphone - 如何处理编译器优化问题

c - gcc mingw 在与程序集结合时给出垃圾输出

java - CMake - 安装后设置文件权限(java)

cmake - 如何获取 Eclipse Paho MQTT C 客户端的静态库?