下载文件: zlib-1.2.8.tar.gz
MSYS2 + MinGW
- 解压,用 MSYS2 Shell 进入该目录,执行
$ ./configure
无误,
$ make
提示 找不到 libc.a 库
用 grep -R "\-lc" * 搜索相关文件的时候,发现了changelog有这样一句:gcc -shared -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -o libz.so.1.2.8 adler32.lo crc32 .lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo co mpress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -lc c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.1.0/../../../../x86_64-w64-mingw32/ bin/ld.exe: cannot find -lc collect2.exe: error: ld returned 1 exit status make: *** [Makefile:163: libz.so.1.2.8] Error 1
同时网上翻到这个链接 http://bbs.chinaunix.net/thread-1285498-1-1.html- Don't use -lc when linking shared library on MinGW
效仿里面的方法,打开Makefile,在第43行,LDSHAREDLIBC=-lc 改为 LDSHAREDLIBC=
编译通过$ make $ make check
- 后来找 README / INSTALL / TODO 之类的说明的时候,发现有个 CMakeLists.txt
试试用Cmake,
一次通过$ cmake -G "MinGW Makefiles" . $ make $ make test
- 怪我一开始没有先看看说明文档和目录结构,在zlib-1.2.8/win32 目录下有 Makefile.gcc 文件
复制到上一层目录,用 Cmd 进入该目录,直接
编译通过$make -f Makefile.gcc