为 32 位构建 zlib libz.a
我正在尝试编译我使用 zlib 编写的程序的 32 位版本 (MinGW)。到目前为止,我从未需要编译 32 位,因此我从源代码 (libz.a) 编译的 zlib 版本是 64 位。我尝试重新运行 zlib-1.2.5 目录中的 makefile,但它只编译 64 位版本的 libz.a。
我似乎找不到构建 32 位的选项。
有谁知道该怎么做?
谢谢!
杰弗里·凯文·普赖
I am trying to compile a 32-bit version (MinGW) of a program I wrote using zlib. Until now, I've never has to compile for 32-bit so the version of zlib I compiled from source (libz.a) is 64-bit. I tried to rerun the makefile in the zlib-1.2.5 directory but it only compiles a 64bit version of libz.a.
I can't seem to find an option to build 32-bit.
Does anyone know how to do this?
Thanks!
Jeffrey Kevin Pry
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
检查配置文件,可以看到一些env.
在 64 位 debian 上,以下命令行将构建 32 位版本的 libz
Checking the configure file, you can see some env.
On 64bit debian, following command line will build the 32bit version of libz
结果我必须获得 32 位版本的 MinGW 并用它来编译它。我使用的是 MinGW64。
It turns out I had to get the 32bit version of MinGW and compile it with that. I was using MinGW64.
使用
CFLAGS=-32
不会为我做这件事,configure
脚本仍然大声告诉我使用win32/Makefile.gcc
而不是所有时间。zlib 的最新版本是 1.2.11,所以到今天为止差异应该是最小的。如果没有任何系统上下文,以下内容可能对目前面临类似问题的其他用户有用。
我在 Linux (Ubuntu 18.04) 上进行交叉编译,并以要生成的 zlib 的 32 位版本为目标。我所做的如下。
./configure
(这只是为了让我们拥有构建过程所需的文件,但我们将使用不同的 Makefile)win32/Makefile.gcc
为其PREFIX=i686-w64-mingw32-
(对于 64 位,您将其更改为PREFIX=x86_64-w64-mingw32-
。make -fwin32/Makefile.gcc
INCLUDE_PATH
、LIBRARY_PATH
和BINARY_PATH
将包含结果 .dll 文件。Using
CFLAGS=-32
won't do it for me,configure
script still shouts out telling me to usewin32/Makefile.gcc
instead all the time.The recent version of zlib is 1.2.11, so it should be minimal gap of difference up until today. Without any context on system, the following might be useful for other users facing this similar problem these days.
I cross compile on Linux (Ubuntu 18.04), and target 32-bit version of zlib to be produced. What I did is as follows.
./configure
(this is just to let us have required file to building process, we will be using different Makefile though)win32/Makefile.gcc
for itsPREFIX=i686-w64-mingw32-
(for 64-bit you change it toPREFIX=x86_64-w64-mingw32-
.make -fwin32/Makefile.gcc
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
. Notice that you need to specifyINCLUDE_PATH
,LIBRARY_PATH
, andBINARY_PATH
.BINARY_PATH
will contains result .dll file.