hardware: intel duo imac 20"
os x: 10.4.6
steps:
------
./configure
--enable-framework=/Library/Frameworks/Python.framework
--enable-shared
make
...
c++ -u _PyMac_Error
Python.framework/Versions/2.4/Python -o python.exe \
Modules/python.o \
-ldl
/usr/bin/ld: warning
Python.framework/Versions/2.4/Python cputype (18,
architecture ppc) does not match cputype (7) for
specified -arch flag: i386 (file not loaded)
/usr/bin/ld: Undefined symbols:
_PyMac_Error
_Py_Main
collect2: ld returned 1 exit status
make: *** [python.exe] Error 1
analysis:
---------
The arch flag for the Python shared library in
the framework is incorrect.
file shows Python.framework/Versions/2.4/Python
to be a PPC binary.
scroll up in terminal to find link statement for
Python:
libtool -o Python.framework/Versions/2.4/Python
-dynamic libpython2.4.a \
-lSystem -lSystemStubs -arch_only ppc
-install_name
/Library/Frameworks/Python.framework/Python.framework/Versions/2.4/Python
-compatibility_version 2.4 -current_version 2.4
The '-arch_only ppc' flag is the problem.
workaround:
-----------
After running configure, open makefile and so
a s/arch_only ppc/arch_only i386/g
what needs to be fixed:
-----------------------
Around line 10218 in configure:
Darwin/[01234567].*) LIBTOOL_CRUFT="-framework
System -lcc_dynamic -arch_only ppc"
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name
$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT'
-compatibility_version $(VERSION) -current_version
$(VERSION)';;
Darwin/*)
gcc_version=`gcc -v 2>&1 | grep version | cut -d\
-f3`
if test ${gcc_version} '<' 4.0
then
LIBTOOL_CRUFT="-lcc_dynamic"
else
LIBTOOL_CRUFT=""
fi
|