gpt4 book ai didi

gcc - MSYS2静态链接输出二进制

转载 作者:行者123 更新时间:2023-12-02 08:33:53 26 4
gpt4 key购买 nike

有什么方法可以静态链接从 MSYS2 gcc 生成的 .exe 文件吗?我尝试了很多方法,但没有一个有效。所有生成的 .exe 文件都需要 msys-2.0.dll,我想删除它。到目前为止,我尝试启用 -ststic 选项、-static-libgcc 选项并将这些选项传递给 -Wl,但它们都不起作用。我尝试剥离或不剥离二进制文件,除了输出文件大小之外没有任何区别。我知道我可以在 MSYS1.0 gcc 或 Linux 的 mingw-w64 中执行此操作,但我不能在 MSYS2.0 中执行此操作。运行 gcc -v 后,它显示工具链确实是使用 --enable-static 以及 --enable-shared 和 --enable-shared-libgcc 编译的。无论如何我可以获得静态 libgcc 库吗?

最佳答案

嗯,我解决了。从 MSYS2 的文档中可以看出,MSYS2 旨在通过使用通用的共享 libc 来减轻 DLL hell 和错误。因此,它无意创建静态链接的可执行文件。

但是,您可以从 pacman 安装 mingw-w64 软件包,并运行 mingw64.exe 来启动 shell,而不是 msys2.exe。通过这样做,您可以从 bash 安装并运行原始的 mingw-w64 编译器套件,而不是 MSYS2 版本。

原始 mingw-w64 包生成的可执行文件是静态链接的。它不需要 msys-2.0.dll,而是需要普遍可用的 msvcrt.dll。

关于gcc - MSYS2静态链接输出二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524839/

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