构建zlib libz.a为32位

时间:2011-06-29 12:21:21

标签: c++ mingw zlib

我正在尝试编译我使用zlib编写的程序的32位版本(MinGW)。到现在为止,我从来没有编译32位,所以我从源代码(libz.a)编译的zlib版本是64位。我试图在zlib-1.2.5目录中重新运行makefile,但它只编译64位版本的libz.a.

我似乎无法找到构建32位的选项。

有谁知道怎么做?

谢谢!

Jeffrey Kevin Pry

3 个答案:

答案 0 :(得分:3)

检查配置文件,您可以看到一些环境

在64位debian上,以下命令行将构建32位版本的libz

CFLAGS=-m32 ./configure

答案 1 :(得分:0)

事实证明我必须得到32位版本的MinGW并用它进行编译。我使用的是MinGW64。

答案 2 :(得分:0)

使用CFLAGS=-32不会对我有用,configure脚本仍然会喊着告诉我始终使用win32/Makefile.gcc


zlib的最新版本是1.2.11,因此到今天为止,它的差异应该是最小的。在系统上没有任何上下文的情况下,以下这些对于当今面临类似问题的其他用户可能有用。

我在Linux(Ubuntu 18.04)上进行交叉编译,目标是要生产的32位版本的zlib。我所做的如下。

  1. ./configure(这只是为了让我们拥有构建过程所需的文件,尽管我们将使用其他Makefile)
  2. 为其win32/Makefile.gcc修改PREFIX=i686-w64-mingw32-(对于64位,请将其更改为PREFIX=x86_64-w64-mingw32-
  3. make -fwin32/Makefile.gcc
  4. 通过make install -fwin32/Makefile.gcc SHARED_MODE=1 INCLUDE_PATH=/tmp/zlib-win32/include LIBRARY_PATH=/tmp/zlib-win32/lib BINARY_PATH=/tmp/zlib-win32/bin安装到您想要的位置。请注意,您需要指定INCLUDE_PATHLIBRARY_PATHBINARY_PATHBINARY_PATH将包含结果.dll文件。