我正在使用 mingw gcc 和 msys 来构建一些 GNU 实用程序。过去,由于不同的可执行文件需要不同版本的 libiconv,我遇到了很多问题,所以为了避免这个问题,我想将 iconv 静态链接到可执行文件中。
我已经使用 mingw 和 msys 以及 configure --enable-static 构建了 libiconv。这将创建 DLL、.dll.a 导入库和普通的 .a 静态库。
但是,当我尝试构建另一个与简单的 -liconv 链接的程序时,我得到了链接的 DLL。我认为 ld 出于某种原因更喜欢导入库而不是静态库(一般来说,这是一个不错的选择,这是特殊情况)。
如何确保我构建的程序是静态链接的?一种明显的方法是在构建时简单地删除 .dll.a 文件。这可能是最简单的选择,但我很好奇 - 是否可以设置链接器标志(通过 LDFLAGS 之类的东西)以强制静态加载 iconv(理想情况下,不影响其他库,但在紧要关头我会好的静态加载所有库)