libpng issues

Charles Wilson cygwin@cwilson.fastmail.fm
Fri Nov 12 20:40:00 GMT 2004


Marco Alanen wrote:

> Yes it's installed, otherwise it wouldn't compile nor run :)
> 
>  > Please contact the distributor of your MinGW libpng since this library
>  > is not distributed with Cygwin it is not supported here.
> 
> Ok. I just thought that since it's included in the cygwin installer, 
> someone here might have an idea (or previous experiences) about this.

"...it's included..." ???

Yes, the cygwin installation includes TWO cygwin versions of libpng 
(1.0.x and 1.2.x).  You can link against those libraries 
(/usr/lib/libpng*), and include their headers (/usr/include/*) -- but 
they require and use cygwin as their runtime library.

If you attempt to link against them using gcc- -mno-cygwin, there are 
two problems:

   (1) you get msvcrt.dll as your runtime library, NOT cygwin -- and 
even if you COULD get it to link, it wouldn't work properly because the 
libpng library isn't getting the runtime library it expects.

       thus, this is not an issue for this list; you want the mingw list 
-- and maybe check out the GNUWin32 (*) project for mingw versions of 
various libraries.  (*) grumble grumble gnuwin name USED to mean cygwin 
grumble needless confusion grumble.

   (2) Because the folks who created the -mno-cygwin switch KNOW this, 
they made it so that gcc, when given -mno-cygwin flag, doesn't even LOOK 
in /usr/lib when linking, nor in /usr/include when when 
preproceesing/compiling.  Because the only thing you'll find, on a 
cygwin system, in those two directories, are CYGWIN libraries and headers.

    gcc -mno-cygwin looks in /usr/lib/mingw and /usr/include/mingw

The libpng packages provided by the cygwin project are do NOT provide 
mingw versions.  If you want mingw versions of those libraries, you'll 
have to get them from the mingw people (or compile them yourself, or go 
to GNUWin32 <grumble>) and put them into your *cygwin* installation's 
/usr/lib/mingw and /usr/include/mingw manually.

(Note that mingw-**MSYS** sets up its own, entirely separate tree, with 
it's own /usr/include/ and /usr/lib/, which are (obviously) filled with 
all kinds of mingw-goodies.  That's not what I'm talking about here; 
cygwin can't see THOSE directories.  Cygwin != MSYS.).

As far as I know, other than mingw-runtime and w32api, there are only 
TWO packages in the standard cygwin installation that provide mingw 
libraries: mingw-zlib and mingw-bzip2/mingw-libbz2.  I think you'll find 
the difference between

cygwin's cygwin-zlib (e.g. "normal for the cygwin system" zlib) package 
contents
http://cygwin.com/cgi-bin2/package-cat.cgi?file=zlib%2Fzlib-1.2.1-2&grep=zlib

and cygwin's mingw-zlib package contents 
http://cygwin.com/cgi-bin2/package-cat.cgi?file=mingw-zlib%2Fmingw-zlib-1.2.1-2&grep=mingw-zlib

quite instructive.  Obviously, cygwin's libpng packages are "normal for 
the cygwin system" and are NOT mingw-ish.

--
Chuck
libpng* maintainer
zlib maintainer
mingw-zlib maintainer
bzip2 maintainer
mingw-bzip2 maintainer


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list