installing boost getting error "ld: symbol(s) not found for architecture x86_64" on OSX 10.9.2

Hi everyone,
I hope this is the right place to ask my question.
I'm trying to build boost 1.55.0 for python on OSX 10.9.2 but i'm encountering the following error "ld: symbol(s) not found for architecture x86_64" and I'm really blocked. I read it might be related to the standard c++ library which changed with maverick to be libc++ by default. But even adding
cxxflags="-stdlib=libstdc++" when executing ./b2 didn't help.
Here is what I did following the boost tutorial:
download boost_1_55_0.tar
./bootstrap.sh --with-libraries=python toolset=darwin
./b2 include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"
And I get the following error:
link.jam: No such file or directory
Building the Boost C++ Libraries.
error: No best alternative for /python_for_extensions
next alternative: required properties: <python>2.7 <target-os>darwin
matched
next alternative: required properties: <python>2.7 <target-os>darwin
matched
error: No best alternative for /python_for_extensions
next alternative: required properties: <python>2.7 <target-os>darwin
matched
next alternative: required properties: <python>2.7 <target-os>darwin
matched
Component configuration:
- python : building
darwin.link.dll bin.v2/libs/python/build/darwin-4.2.1/release/threading- multi/libboost_python.dylib
Undefined symbols for architecture x86_64:
"_PyFile_FromString", referenced from:
boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
"_PyFile_AsFile", referenced from:
boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
"_PyEval_GetGlobals", referenced from:
boost::python::eval(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
boost::python::exec_statement(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o
"_PyRun_StringFlags", referenced from:
........
"_PyExc_StopIteration", referenced from:
boost::python::objects::stop_iteration_error() in iterator.o
"_PyNumber_InPlaceAdd", referenced from:
boost::python::api::operator+=(boost::python::api::object&, boost::python::api::object const&) in object_operators.o
"_PyUnicodeUCS2_FromEncodedObject", referenced from:
_encode_string_unaryfunc in builtin_converters.o
"_PyErr_NoMemory", referenced from:
boost::python::handle_exception_impl(boost::function0<void>) in errors.o
"_PyDict_New", referenced from:
boost::python::detail::dict_base::dict_base() in dict.o
boost::python::detail::dict_base::dict_base() in dict.o
_instance_get_dict in class.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
"g++" -dynamiclib -Wl,-single_module -install_name "libboost_python.dylib" -o "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/libboost_python.dylib" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/numeric.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/list.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/long.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/dict.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/tuple.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/str.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/slice.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/converter/from_python.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/converter/registry.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/converter/type_id.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/enum.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/class.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/function.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/inheritance.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/life_support.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/pickle_support.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/errors.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/module.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/converter/builtin_converters.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/converter/arg_to_python_base.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/iterator.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/stl_iterator.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object_protocol.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object_operators.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/wrapper.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/import.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/exec.o" "bin.v2/libs/python/build/darwin-4.2.1/release/threading-multi/object/function_doc_signature.o" -headerpad_max_install_names -Wl,-dead_strip -no_dead_strip_inits_and_terms
...failed darwin.link.dll bin.v2/libs/python/build/darwin-4.2.1/release/threading- multi/libboost_python.dylib...
...skipped

AMDG On 03/31/2014 11:21 PM, Corentin Hamel wrote:
<snip> /*./bootstrap.sh --with-libraries=python toolset=darwin*/
/*./b2 include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"*/
You shouldn't need to add the includes path explicitly if python is configured correctly.
And I get the following error:
/*link.jam: No such file or directory*/ /*Building the Boost C++ Libraries.*/
/*error: No best alternative for /python_for_extensions*/ /*next alternative: required properties: <python>2.7 <target-os>darwin*/ /*matched*/ /*next alternative: required properties: <python>2.7 <target-os>darwin*/ /*matched*/
You've probably initialized python more than once. Try ./b2 --debug-configuration to see what's happening. In Christ, Steven Watanabe

Thanks for your answer.
The problem is if I don't specify
include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"*/
I get the following error:
/boost/python/detail/wrap_python.hpp:50:11: fatal error: 'pyconfig.h' file not found
# include

AMDG On 04/01/2014 03:35 PM, Corentin Hamel wrote:
The problem is if I don't specify include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"*/
I get the following error: /boost/python/detail/wrap_python.hpp:50:11: fatal error: 'pyconfig.h' file not found # include
^ 1 error generated.
It's failing for the same reason that linking is failing later. double initialization is corrupting the python module and preventing the flags from being passed to the compiler.
Even if using ./b2 --debug-configuration, I can see the python include path well set
notice: [python-cfg] interpreter command: "/Library/Frameworks/Python.framework/Versions/2.7/bin/python" notice: [python-cfg] include path: "/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7" notice: [python-cfg] library path: "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" "/Library/Frameworks/Python.framework/Versions/2.7/lib"
And here is the full message output but debug configuration. I can't really see anything bad
Both ~/user-config.jam and ./project-config.jam are trying to set up python. Just delete the using python ; line from project-config.jam and you should be good. (This is a bug in the bootstrap script, which I will fix.) In Christ, Steven Watanabe

Works grey!
Thanks a lot!
Corentin Hamel
Software Engineer
Rocketboots
Level 11, 189 Kent Street
Sydney NSW 2000
----- Original Message -----
From: "Steven Watanabe"
The problem is if I don't specify include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"*/
I get the following error: /boost/python/detail/wrap_python.hpp:50:11: fatal error: 'pyconfig.h' file not found # include
^ 1 error generated.
It's failing for the same reason that linking is failing later. double initialization is corrupting the python module and preventing the flags from being passed to the compiler.
Even if using ./b2 --debug-configuration, I can see the python include path well set
notice: [python-cfg] interpreter command: "/Library/Frameworks/Python.framework/Versions/2.7/bin/python" notice: [python-cfg] include path: "/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7" notice: [python-cfg] library path: "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" "/Library/Frameworks/Python.framework/Versions/2.7/lib"
And here is the full message output but debug configuration. I can't really see anything bad
Both ~/user-config.jam and ./project-config.jam are trying to set up python. Just delete the using python ; line from project-config.jam and you should be good. (This is a bug in the bootstrap script, which I will fix.) In Christ, Steven Watanabe _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Actually I have another problem now...
When try to build a python application using boost, I'm getting this error using make.
I tried to use ./b2 cxxflags="-ftemplate-depth=256" as mentioned in this topic https://groups.google.com/forum/#!topic/boost-list/KJXwGcugNEs but didn't make any difference.
Any idea?
Thanks!
[ 1%] Building CXX object src/CMakeFiles/pagmo_static.dir/problem/death_penalty.o
In file included from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pagmo-code/src/problem/death_penalty.cpp:29:
In file included from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pagmo-code/src/problem/../types.h:30:
In file included from /usr/local/boost_1_55_0/boost/lexical_cast.hpp:165:
In file included from /usr/local/boost_1_55_0/boost/type_traits/has_left_shift.hpp:43:
In file included from /usr/local/boost_1_55_0/boost/type_traits/detail/has_binary_operator.hpp:15:
/usr/local/boost_1_55_0/boost/type_traits/is_fundamental.hpp:26:20: fatal error: recursive template instantiation exceeded maximum depth
of 128
::boost::is_arithmetic<T>::value
^
/usr/local/boost_1_55_0/boost/type_traits/is_fundamental.hpp:38:64: note: in instantiation of template class
'boost::detail::is_fundamental_impl<const double>' requested here
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,::boost::detail::is_fundamental_impl<T>::value)
^
/usr/local/boost_1_55_0/boost/type_traits/detail/bool_trait_def.hpp:69:30: note: expanded from macro 'BOOST_TT_AUX_BOOL_TRAIT_DEF1'
BOOST_TT_AUX_BOOL_C_BASE(C) \
^
/usr/local/boost_1_55_0/boost/type_traits/detail/bool_trait_def.hpp:63:81: note: expanded from macro 'BOOST_TT_AUX_BOOL_C_BASE'
# define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::boost::integral_constant
The problem is if I don't specify include="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/"*/
I get the following error: /boost/python/detail/wrap_python.hpp:50:11: fatal error: 'pyconfig.h' file not found # include
^ 1 error generated.
It's failing for the same reason that linking is failing later. double initialization is corrupting the python module and preventing the flags from being passed to the compiler.
Even if using ./b2 --debug-configuration, I can see the python include path well set
notice: [python-cfg] interpreter command: "/Library/Frameworks/Python.framework/Versions/2.7/bin/python" notice: [python-cfg] include path: "/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7" notice: [python-cfg] library path: "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" "/Library/Frameworks/Python.framework/Versions/2.7/lib"
And here is the full message output but debug configuration. I can't really see anything bad
Both ~/user-config.jam and ./project-config.jam are trying to set up python. Just delete the using python ; line from project-config.jam and you should be good. (This is a bug in the bootstrap script, which I will fix.) In Christ, Steven Watanabe _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Corentin Hamel
-
Steven Watanabe