MinGW/Cmake 编译 zlib 库

C/C++第三方开源库的介绍和相关讨论
回复
头像
523066680
Administrator
Administrator
帖子: 573
注册时间: 2016年07月19日 12:14
联系:

MinGW/Cmake 编译 zlib 库

帖子 523066680 »

官网: zlib.net
下载文件: zlib-1.2.8.tar.gz

MSYS2 + MinGW
  • 解压,用 MSYS2 Shell 进入该目录,执行
    $ ./configure

    无误,
    $ make

    提示 找不到 libc.a 库
    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
    用 grep -R "\-lc" * 搜索相关文件的时候,发现了changelog有这样一句:
    - Don't use -lc when linking shared library on MinGW
    同时网上翻到这个链接 http://bbs.chinaunix.net/thread-1285498-1-1.html
    效仿里面的方法,打开Makefile,在第43行,LDSHAREDLIBC=-lc 改为 LDSHAREDLIBC=
    $ make $ make check
    编译通过
Cmake
  • 后来找 README / INSTALL / TODO 之类的说明的时候,发现有个 CMakeLists.txt
    试试用Cmake,
    $ cmake -G "MinGW Makefiles" . $ make $ make test
    一次通过
make
  • 怪我一开始没有先看看说明文档和目录结构,在zlib-1.2.8/win32 目录下有 Makefile.gcc 文件
    复制到上一层目录,用 Cmd 进入该目录,直接
    $make -f Makefile.gcc
    编译通过
回复

在线用户

正浏览此版面之用户: 没有注册用户 和 1 访客