gpt4 book ai didi

mingw - 如何使用 msys 在 Windows 上静态链接 iconv?

转载 作者:行者123 更新时间:2023-12-01 05:26:21 31 4
gpt4 key购买 nike

我正在使用 mingw gcc 和 msys 来构建许多 GNU 实用程序。过去,由于不同的可执行文件需要不同版本的 libiconv,我遇到了很多问题,所以为了避免这个问题,我想将 iconv 静态链接到可执行文件中。

我已经使用 mingw 和 msys 和 configure --enable-static 构建了 libiconv。这将创建 DLL、.dll.a 导入库和普通的 .a 静态库。

但是,当我尝试构建另一个与简单的 -liconv 链接的程序时,我链接了 DLL。我认为 ld 出于某种原因更喜欢导入库而不是静态库(通常不是一个糟糕的选择,这是特殊情况)。

如何确保我构建的程序是静态链接的?一种明显的方法是在构建时简单地删除 .dll.a 文件。这可能是最简单的选择,但我很好奇 - 有没有我可以设置的链接器标志(通过 LDFLAGS 之类的东西)来强制静态加载 iconv(理想情况下,不影响其他库,但在紧要关头我会没事的静态加载所有库)

最佳答案

你是对的,默认情况下它会链接“共享”,除非你专门告诉它链接静态。您可以通过几种方式执行此操作,以适合您的方式

make CC='gcc -static'
make LDFLAGS=-static
make LDFLAGS=libiconv.a

你只需要看看 Makefile并找到最少侵入性的方式来适应它。

Example

关于mingw - 如何使用 msys 在 Windows 上静态链接 iconv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653287/

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