Hello -- summary: I'm trying to compile the boost python library using a custom installed python on osx. however, it appears to be linking to the system library, not the installed library.
I'm using OSX 10.6.2, which has python 2.6.1 by default. I wanted to try to install 2.6.4 just to see how the process works. I To install python, I did this: ./configure --enable-framework make make install which put the distribution here: /Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 I changed a boost config file to read: using python : 2.6 : /Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 : /Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 : /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config ; and compiled the library. However, when I examine the library itself: % otool -L libboost_python.dylib libboost_python.dylib: libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0) I can see that it linked to the system's version. Why did it choose that one? The problem is that when I run my code, I get the error: Fatal Python error: Interpreter not initialized (version mismatch?) ../../../triad.sh: line 9: 59136 Abort trap python $@ the OS gives me a popup window mentioning all the linked libraries: Binary Images: 0x100000000 - 0x100000ff7 +org.python.python 2.6.4 (2.6.4) <536A2002-9AEC-D7DF-8C2B-6C634FB7F37E> /Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python 0x100003000 - 0x100153fe7 +org.python.python 2.6.4, (c) 2004-2008 Python Software Foundation. (2.6.4) <3B4D8CE1-8D9C-97CB-57BA-A8F4C40CE5F0> /Library/Frameworks/Python.framework/Versions/2.6/Python 0x1002e7000 - 0x1002e8ff7 +time.so ??? (???) <CB23D26C-1417-4D31-9E06-1E33CCDCA83C> /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/time.so 0x100480000 - 0x100493fef +libgcc_s.1.dylib ??? (???) <E51F2952-8BEB-C427-10A9-672FC10E3A54> /usr/local/lib/libgcc_s.1.dylib 0x100753000 - 0x10077bfff +libboost_wserialization.dylib ??? (???) <4FD94C16-75D0-DE5D-A27B-E3AEAEEA8CCC> /Users/amos/triad/trunk/lib/libboost_wserialization.dylib 0x101000000 - 0x1013eeff7 +triad.so ??? (???) <EEF65664-60F0-E721-06A8-82F88CEA1EFC> /Users/amos/triad/trunk/lib/triad.so 0x1020eb000 - 0x102124fef +libboost_serialization.dylib ??? (???) <33DB6DD1-4712-AEE1-0761-18054566A5E4> /Users/amos/triad/trunk/lib/libboost_serialization.dylib 0x1021b1000 - 0x1021f0ff7 +libboost_python.dylib ??? (???) <67258016-C11E-8EDF-BF36-103DBC219C78> /Users/amos/triad/trunk/lib/libboost_python.dylib 0x10223e000 - 0x10234eff7 org.python.python 2.6.1 (2.6.1) <01EBD0D4-F181-045F-C7A8-B7B3C5D4204F> /System/Library/Frameworks/Python.framework/Versions/2.6/Python 0x7fff5fc00000 - 0x7fff5fc3bdef dyld 132.1 (???) <B633F790-4DDB-53CD-7ACF-2A3682BCEA9F> /usr/lib/dyld 0x7fff813dc000 - 0x7fff81459fef libstdc++.6.dylib ??? (???) <35ECA411-2C08-FD7D-11B1-1B7A04921A5C> /usr/lib/libstdc++.6.dylib 0x7fff81f2c000 - 0x7fff81f3dfef libz.1.dylib ??? (???) <3A7A4C48-A4C8-A78A-8B87-C0DDF6601AC8> /usr/lib/libz.1.dylib 0x7fff846e0000 - 0x7fff846e4ff7 libmathCommon.A.dylib ??? (???) <95718673-FEEE-B6ED-B127-BCDBDB60D4E5> /usr/lib/system/libmathCommon.A.dylib 0x7fff888bb000 - 0x7fff88a79ff7 libSystem.B.dylib ??? (???) <526DD3E5-2A8B-4512-ED97-01B832369959> /usr/lib/libSystem.B.dylib 0x7fffffe00000 - 0x7fffffe01fff libSystem.B.dylib ??? (???) <526DD3E5-2A8B-4512-ED97-01B832369959> /usr/lib/libSystem.B.dylib Where i've deleted all the lines with my libraries. Note: I can do this: /Library/Frameworks> sudo mv Python.Framework temp.Python.Framework and then everything works fine. So I assume that the problem is the one python file 2.6.1 which didn't come from the same python path as the other python paths. When I compile, I get this: % bjam -d 2 release ... deleted similar lines .... "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -no-cpp-precomp -gdwarf-2 -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG -I"/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" -I"boost/boost_1_40_0" -c -o "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/import.o" "boost/boost_1_40_0/libs/python/src/import.cpp" darwin.compile.c++ boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/exec.o "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -no-cpp-precomp -gdwarf-2 -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG -I"/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" -I"boost/boost_1_40_0" -c -o "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/exec.o" "boost/boost_1_40_0/libs/python/src/exec.cpp" darwin.compile.c++ boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/function_doc_signature.o "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -no-cpp-precomp -gdwarf-2 -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG -I"/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" -I"boost/boost_1_40_0" -c -o "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/function_doc_signature.o" "boost/boost_1_40_0/libs/python/src/object/function_doc_signature.cpp" darwin.link.dll boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/libboost_python.dylib "g++" -dynamiclib -Wl,-single_module -install_name "libboost_python.dylib" -L"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config" -o "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/libboost_python.dylib" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/numeric.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/list.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/long.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/dict.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/tuple.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/str.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/slice.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/converter/from_python.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/converter/registry.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/converter/type_id.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/enum.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/class.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/function.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/inheritance.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/life_support.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/pickle_support.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/errors.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/module.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/converter/builtin_converters.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/converter/arg_to_python_base.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/iterator.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/stl_iterator.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object_protocol.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object_operators.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/wrapper.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/import.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/exec.o" "boost/boost_1_40_0/bin.v2/libs/python/build/darwin-4.2.1/release/object/function_doc_signature.o" -lpython2.6 -headerpad_max_install_names -Wl,-dead_strip -no_dead_strip_inits_and_terms So again we can see that it's finding the header files for each object file, but then when they're all being linked, it's seems to be skipping the library that (I think) it should be picking: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config> ls -lrt total 208 -rw-r--r-- 1 root admin 3.7K Feb 26 12:25 python.o -rwxr-xr-x@ 1 root admin 7.3K Feb 26 12:25 makesetup* -rwxr-xr-x@ 1 root admin 7.0K Feb 26 12:25 install-sh* -rw-r--r--@ 1 root admin 1.4K Feb 26 12:25 config.c.in -rw-r--r-- 1 root admin 2.0K Feb 26 12:25 config.c -rw-r--r-- 1 root admin 41B Feb 26 12:25 Setup.local -rw-r--r-- 1 root admin 368B Feb 26 12:25 Setup.config -rw-r--r--@ 1 root admin 18K Feb 26 12:25 Setup -rw-r--r-- 1 root admin 42K Feb 26 12:25 Makefile lrwxr-xr-x 1 root admin 15B Feb 26 12:25 libpython2.6.a@ -> ../../../Python I tried changing the name of the library to something else more unique and manually ran the link line (outside of bjam), and I *can* link to it, so that's not the problem. Why isn't it choosing the -L selected libpython2.6.a? Or maybe I'm doing something else wrong. Or maybe it's Apple's fault, or maybe I need to update boost from 1.40. amos. _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig