2011-12-06 8 views
7

Zastanawiałem się, czy ktoś mógłby mi pomóc rozwiązać ten problem. Kiedy próbuję python setup.py kompilacji (lub pip install lub easy_install), to dziejePotrzebujesz pomocy z instalowaniem pakietu autografów Pythona na Mac OS X - trudność z libpng i png.h

istota jest

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 

... pęczek błędów ...

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 znajduje się w bibliotece/frameworkach, która znajduje się na ścieżce wyszukiwania dla <> zawiera (sprawdziłem z cpp -v), ale jest tam jako libpng.framework, a następnie nagłówki są w podkatalogu zwanym nagłówkami. Istnieje również kilka wersji libpng w pliku libpng.framework. Używam również 64-bitowego pythona. Jakieś pomysły, jak postępować?

Dzięki Pat

Odpowiedz

2

Błąd jest, jak się domyślacie, ponieważ kompilator nie może znaleźć pliku nagłówka png.h

możesz mi powiedzieć w jaki sposób struktura jest wliczone w cenę? Czy używasz -I i -L?

Poprawna składnia tym ramy z GCC jest

gcc -F * dir *

lub

gcc -iframework * dir *

Nadzieja to pomaga

Od http://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html

-F dir Dodaj katalog katalogów katalogowych do nagłówka listy katalogów do wyszukania plików nagłówkowych. Te katalogi są przeplatane z tymi określonymi opcjami -I i są skanowane w kolejności od lewej do prawej.

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.