MinGW/Cmake 编译 zlib 库

C/C++第三方开源库的介绍和相关讨论
头像
523066680
Administrator
Administrator
帖子: 340
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 30 times
Been thanked: 27 times
联系:

MinGW/Cmake 编译 zlib 库

帖子 #1 523066680 » 2016年10月26日 18:08

官网: 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 访客