py2app завершается с ошибкой, связанной с libgfortran.3.dylib

py2app заканчивается следующей ошибкой:

/usr/bin/strip: the __LINKEDIT segment does not cover the end of the file 
(can't be processed) in: test.app/Contents/Frameworks/libgfortran.3.dylib
stripping saved 1222348 bytes (88617336 / 89839684)

эта последняя строка вывода консоли:

../Frameworks/libgfortran.3.dylib: mach-o, but wrong architecture

Как я могу это исправить?

Я использую Snow Leopard (x86_64)
Python 2.6.6 (r266:84292, 4 февраля 2011 г., 20:12:20)
[GCC 4.2.1 (Apple Inc., сборка 5646) (точка 1 )] по Дарвину


person gok    schedule 12.03.2011    source источник


Ответы (1)


Сначала решите, для каких архитектур и версий ОС вы планируете производить сборку.

Затем убедитесь, что libgfortran и другие ваши зависимости скомпилированы для этих архитектур. (Вы можете использовать lipo -info или file для печати архитектур, содержащихся в двоичном файле Mach-O).

Наконец, если архитектуры являются подмножеством тех, для которых создана используемая вами версия Python, либо скомпилируйте/используйте версию Python, созданную только для этих архитектур, либо взломайте distutils, чтобы удалить флаги -arch (и добавить -isysroot при необходимости), как в этом скрипте.

person Nicholas Riley    schedule 12.03.2011
comment
@nicholas-riley: ладно, я тут немного заблудился. Я использую py26-py2app-devel(0.5.3) от MacPorts. Он сделан универсальным. У меня тоже есть gcc44 от macports, хотя это не gcc по умолчанию. gcc44 также построен +универсально, но почему-то libgfortran.3.dylib - это только i386. Как я могу понять, какой gcc используется py2app? Наконец, мне на самом деле не нужна 64-битная версия, это еще не программное обеспечение для конечных пользователей, я пока только тестирую его на своей машине. Как проще всего выбраться? - person gok; 12.03.2011
comment
distutils (это то, что вы используете с py2app) пытается вызвать компилятор с флагами компиляции, с которыми он был скомпилирован. Поэтому, если вы используете Python из MacPorts, он будет использовать эту версию Python. Я думаю, что MacPorts по умолчанию является только 64-битным, поэтому лучше всего установить один из 32-битных Python с python.org и использовать его вместо этого; вероятно, проще, чем пытаться исправить процесс сборки gfortran. - person Nicholas Riley; 13.03.2011