I was wondering if anyone could help me figure this out. When i try to python setup.py build (or pip install, or easy_install), this happens
the gist is
src/png_io.c:3:17: error: png.h: No such file or directory
src/png_io.c: In function ‘newMMBitmapFromPNG’:
src/png_io.c:34: error: ‘png_struct’ undeclared (first use in this function)
src/png_io.c:34: error: (Each undeclared identifier is reported only once
... bunch of errors ...
src/png_io.c:332: error: ‘PNG_TRANSFORM_IDENTITY’ undeclared (first use in this function)
lipo: can't figure out the architecture type of: /var/folders/kt/d8t29zkx7kd_7c_mr17ntv6m0000gn/T//ccubs4CM.out
error: command 'gcc-4.2' failed with exit status 1
libpng is in Library/Frameworks, which is on the search path for < > includes (i checked with cpp -v), but its in there as libpng.framework, and then the headers are in a subdirectory called headers. There are also several versions of libpng in the libpng.framework file. I'm also running 64bit python. Any ideas how to proceed?
Thanks, Pat
The error is, as you guessed, because the compiler can't find the header file png.h
Can you tell me how the framework is being included? Are you using -I and -L?
The correct syntax for including a framework with GCC is
gcc -F*dir*
or
gcc -iframework*dir*
Hope this helps
From http://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html
-Fdir Add the framework directory dir to the head of the list of directories to be searched for header files. These directories are interleaved with those specified by -I options and are scanned in a left-to-right order.
A framework directory is a directory with frameworks in it. A framework is a directory with a Headers and/or PrivateHeaders directory contained directly in it that ends in .framework. The name of a framework is the name of this directory excluding the .framework. Headers associated with the framework are found in one of those two directories, with Headers being searched first. A subframework is a framework directory that is in a framework's Frameworks directory. Includes of subframework headers can only appear in a header of a framework that contains the subframework, or in a sibling subframework header. Two subframeworks are siblings if they occur in the same framework. A subframework should not have the same name as a framework, a warning will be issued if this is violated. Currently a subframework cannot have subframeworks, in the future, the mechanism may be extended to support this. The standard frameworks can be found in /System/Library/Frameworks and /Library/Frameworks. An example include looks like #include <Framework/header.h>, where Framework denotes the name of the framework and header.h is found in the PrivateHeaders or Headers directory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With