「Warning: linker path does not have real file for library -lz」の件

mingwでlibpngなどをビルドすると表題のような警告が出てくる。
警告なので放置していたが気になったので調べてみた。
原因はzlibのインストールの仕方に問題があることで、
解決策は
http://bugs.gentoo.org/288212

zlib-1.2.3-mingw-implib.patch
だった。


で、このパッチは中身を見ると

--- zlib-1.2.3/win32/Makefile.gcc
+++ zlib-1.2.3/win32/Makefile.gcc
@@ -25,7 +25,7 @@

 STATICLIB = libz.a
 SHAREDLIB = zlib1.dll
-IMPLIB    = libzdll.a
+IMPLIB    = libz.dll.a

 #LOC = -DASMV
 #LOC = -DDEBUG -g

だけ。
要するにwin32/Makefile.gccで指定されるlibzdll.aがlibtoolの命名規則を守っていないのがよろしくない。
これなら普通にビルドして後からlibzdll.aをlibz.dll.aにリネームしてもよさそうだ。


libcairoでdllができない原因もこれだった。
zlibはいろんなところで使われているので全部リビルドした方がよさげだ。