Hello Andreas,
Thank you for the reply. I have made some progress since my initial post, I have found that part of the problem is that I am using gcc 4.2 and the various #defines for atomics assume that 4.2 will have the appropriate support. The compiler expects that `__sync_add_and_fetch_4' will be provided. I've found there is some assembler provided with the compiler which gives a 'atomic_exchange_and_add' macro which I've had working correctly in a demo programme, but I haven't yet got it integrated with boost, though that would be a nice long-term solution.
Back to the problem though. I've tried a clean build with BOOST_ASIO_DISABLE_FENCED_BLOCK but I'm still getting the same problem. I've attached the build output below. Here are the steps I took to make the clean build:
1. unzip boost_1_48_0.zip
2. mkdir boost-binary
3. set and export
BOOST_BUILD_ROOT=/home/jayne/boost-stb/boost_1_48_0
export BOOST_BUILD_ROOT
BOOST_BIN_ROOT=$BOOST_BUILD_ROOT/boost-binary
export BOOST_BIN_ROOT
4. ./bootstrap.sh
5. Edit the resulting project-config.jam file (which has been generated for the host x86 system)
using gcc : mipsel : mipsel-linux-g++ ;
and
option.set prefix : /opt/brcm/stblinux-2.6.31 ;
option.set exec-prefix : /opt/brcm/stblinux-2.6.31 ;
option.set libdir : /opt/brcm/stblinux-2.6.31/lib ;
option.set includedir : /opt/brcm/stblinux-2.6.31/include/linux ;
6. Edit tools/build/v2/tools/gcc.jam to remove ‘-pendantic’ option (otherwise the string library assembler will not compile)
7. Run ./b2 cxxflags=-DBOOST_ASIO_DISABLE_FENCED_BLOCK --without-python --without-mpi
8. Run ./b2 threading=multi variant=release link=shared toolset=gcc --build-dir=$BOOST_BIN_ROOT --prefix=/tmp/boost --without-python --without-mpi install
While compiling in step 7, a typical compiler line is:
"mipsel-linux-g++"
-ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread
-fPIC -DBOOST_ASIO_DISABLE_FENCED_BLOCK -Wextra -Wno-long-long -pedantic
-DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1
-DBOOST_SYSTEM_NO_DEPRECATED -DNDEBUG
-I"." -c -o "bin.v2/libs/chrono/build/gcc-mipsel/release/threading-multi/process_cpu_clocks.o"
"libs/chrono/src/process_cpu_clocks.cpp"
This is the output from build:
/opt/bcmtools/bin/mipsel-linux-g++ -O2 -I/tmp/boost/include echo_server.o network_utilities.o sha1.o base64.o md5.o uri.o hybi_header.o data.o atomic.o -o echo_server -L/tmp/boost/lib -lboost_regex -lboost_date_time -lboost_program_options -lboost_system -lboost_thread
echo_server.o: In function `boost::asio::detail::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf0<void, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> > >, boost::_bi::list1<boost::_bi::value<websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >*> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail12wait_handlerINS_3_bi6bind_tIvNS_4_mfi3mf0IvN11websocketpp4role6serverINS7_8endpointIS9_NS7_6socket5plainENS7_3log6loggerEEEEEEENS3_5list1INS3_5valueIPSG_EEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationERKNS_6system10error_codeEj+0x94): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf1<void, websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection>, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)()> > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail12wait_handlerINS_3_bi6bind_tIvNS_4_mfi3mf1IvN11websocketpp10connectionINS7_8endpointINS7_4role6serverENS7_6socket5plainENS7_3log6loggerEEENSB_ISG_E10connectionENSD_ISG_E10connectionEEERKNS_6system10error_codeEEENS3_5list2INS3_5valueINS_10shared_ptrISL_EEEEPFNS_3argILi1EEEvEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationESP_j+0xd4): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::reactive_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::ip::tcp, boost::_bi::bind_t<void, boost::_mfi::mf2<void, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >, boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> >, boost::system::error_code const&>, boost::_bi::list3<boost::_bi::value<websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >*>, boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)()> > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail25reactive_socket_accept_opINS0_12basic_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS5_EEEES5_NS_3_bi6bind_tIvNS_4_mfi3mf2IvN11websocketpp4role6serverINSD_8endpointISF_NSD_6socket5plainENSD_3log6loggerEEEEENS_10shared_ptrINSD_10connectionISL_NSM_10connectionENSI_ISL_E10connectionEEEEERKNS_6system10error_codeEEENS9_5list3INS9_5valueIPSM_EENS10_IST_EEPFNS_3argILi1EEEvEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationESX_j+0xdc): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::reactive_socket_service_base::start_op(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, boost::asio::detail::reactor_op*, bool, bool)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x1b0): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x2b4): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x2ec): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x3cc): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x548): undefined reference to `__sync_fetch_and_add_4'
echo_server.o:echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail28reactive_socket_service_base8start_opERNS2_24base_implementation_typeEiPNS1_10reactor_opEbb+0x65c): more undefined references to `__sync_fetch_and_add_4' follow
echo_server.o: In function `boost::asio::detail::reactive_socket_send_op<boost::asio::detail::consuming_buffers<boost::asio::const_buffer, websocketpp::shared_const_buffer>, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, websocketpp::shared_const_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf1<void, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)()> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail23reactive_socket_send_opINS1_17consuming_buffersINS0_12const_bufferEN11websocketpp19shared_const_bufferEEENS1_8write_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceISB_EEEES6_NS1_14transfer_all_tENS_3_bi6bind_tIvNS_4_mfi3mf1IvNS5_4role6serverINS5_8endpointISL_NS5_6socket5plainENS5_3log6loggerEEEE10connectionINS5_10connectionISR_NSS_10connectionENSO_ISR_E10connectionEEEEERKNS_6system10error_codeEEENSG_5list2INSG_5valueINS_10shared_ptrISY_EEEEPFNS_3argILi1EEEvEEEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationES13_j+0x1a8): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::reactive_socket_send_op<boost::asio::detail::consuming_buffers<boost::asio::const_buffer, std::vector<boost::asio::const_buffer, std::allocator<boost::asio::const_buffer> > >, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::vector<boost::asio::const_buffer, std::allocator<boost::asio::const_buffer> >, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf1<void, websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection>, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)()> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail23reactive_socket_send_opINS1_17consuming_buffersINS0_12const_bufferESt6vectorIS4_SaIS4_EEEENS1_8write_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceISC_EEEES7_NS1_14transfer_all_tENS_3_bi6bind_tIvNS_4_mfi3mf1IvN11websocketpp10connectionINSL_8endpointINSL_4role6serverENSL_6socket5plainENSL_3log6loggerEEENSP_ISU_E10connectionENSR_ISU_E10connectionEEERKNS_6system10error_codeEEENSH_5list2INSH_5valueINS_10shared_ptrISZ_EEEEPFNS_3argILi1EEEvEEEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationES13_j+0x208): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::epoll_reactor::descriptor_state::perform_io(unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail13epoll_reactor16descriptor_state10perform_ioEj+0x244): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail13epoll_reactor16descriptor_state10perform_ioEj+0x324): undefined reference to `__sync_fetch_and_add_4'
echo_server.o: In function `boost::asio::detail::epoll_reactor::descriptor_state::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail13epoll_reactor16descriptor_state11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationERKNS_6system10error_codeEj+0x21c): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail13epoll_reactor16descriptor_state11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationERKNS_6system10error_codeEj+0x340): undefined reference to `__sync_fetch_and_add_4'
echo_server.o: In function `boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_until_delim_string_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::allocator<char>, boost::_bi::bind_t<void, boost::_mfi::mf2<void, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> >, boost::system::error_code const&, unsigned int>, boost::_bi::list3<boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)(), boost::arg<2> (*)()> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail23reactive_socket_recv_opINS0_17mutable_buffers_1ENS1_26read_until_delim_string_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEESaIcENS_3_bi6bind_tIvNS_4_mfi3mf2IvN11websocketpp4role6serverINSG_8endpointISI_NSG_6socket5plainENSG_3log6loggerEEEE10connectionINSG_10connectionISO_NSP_10connectionENSL_ISO_E10connectionEEEEERKNS_6system10error_codeEjEENSC_5list3INSC_5valueINS_10shared_ptrISV_EEEEPFNS_3argILi1EEEvEPFNS17_ILi2EEEvEEEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationES10_j+0x13c): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_streambuf_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::allocator<char>, boost::asio::detail::transfer_at_least_t, boost::_bi::bind_t<void, boost::_mfi::mf1<void, websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection>, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<websocketpp::connection<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger>, websocketpp::role::server<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection, websocketpp::socket::plain<websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::plain, websocketpp::log::logger> >::connection> > >, boost::arg<1> (*)()> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)':
echo_server.cpp:(.gnu.linkonce.t._ZN5boost4asio6detail23reactive_socket_recv_opINS0_17mutable_buffers_1ENS1_17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEESaIcENS1_19transfer_at_least_tENS_3_bi6bind_tIvNS_4_mfi3mf1IvN11websocketpp10connectionINSH_8endpointINSH_4role6serverENSH_6socket5plainENSH_3log6loggerEEENSL_ISQ_E10connectionENSN_ISQ_E10connectionEEERKNS_6system10error_codeEEENSD_5list2INSD_5valueINS_10shared_ptrISV_EEEEPFNS_3argILi1EEEvEEEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationESZ_j+0x104): undefined reference to `__sync_lock_test_and_set_4'
echo_server.o: In function `websocketpp::message::intrusive_ptr_release(websocketpp::message::data const*)':
echo_server.cpp:(.gnu.linkonce.t._ZN11websocketpp7message21intrusive_ptr_releaseEPKNS0_4dataE+0x34): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN11websocketpp7message21intrusive_ptr_releaseEPKNS0_4dataE+0x114): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZN11websocketpp7message21intrusive_ptr_releaseEPKNS0_4dataE+0x244): undefined reference to `__sync_fetch_and_add_4'
echo_server.o: In function `std::deque<boost::intrusive_ptr<websocketpp::message::data>, std::allocator<boost::intrusive_ptr<websocketpp::message::data> > >::_M_push_back_aux(boost::intrusive_ptr<websocketpp::message::data> const&)':
echo_server.cpp:(.gnu.linkonce.t._ZNSt5dequeIN5boost13intrusive_ptrIN11websocketpp7message4dataEEESaIS5_EE16_M_push_back_auxERKS5_+0x30): undefined reference to `__sync_fetch_and_add_4'
echo_server.cpp:(.gnu.linkonce.t._ZNSt5dequeIN5boost13intrusive_ptrIN11websocketpp7message4dataEEESaIS5_EE16_M_push_back_auxERKS5_+0x80): undefined reference to `__sync_fetch_and_add_4'
echo_server.o:echo_server.cpp:(.gnu.linkonce.t._ZN11websocketpp9processor4hybiINS_10connectionINS_8endpointINS_4role6serverENS_6socket5plainENS_3log6loggerEEENS5_ISA_E10connectionENS7_ISA_E10connectionEEEE19prepare_close_frameEN5boost13intrusive_ptrINS_7message4dataEEENS_5close6status5valueERKSs+0xc8): more undefined references to `__sync_fetch_and_add_4' follow
collect2: ld returned 1 exit status
make: *** [echo_server] Error 1
On Fri 17/02/12 07:01 , "Andreas Wehrmann" a.wehrmann@centersystems.com sent:
On 02/16/2012 10:06 AM, Jayne wrote:
>
> Hello,
>
> I'm trying to build Boost 1.48.0 for use with the WebSockets++ library
> on a MIPS based embedded Linux board.
>
> My build machine reports itself as: Linux version 2.6.40.4-5.fc15.x86_64
> (mockbuild@x86-10.phx2.fedoraproject.org) (gcc version 4.6.0 20110603
> (Red Hat 4.6.0-10) (GCC) ) #1 SMP Tue Aug 30 14:38:32 UTC 2011
>
> My cross-compiler version is: mipsel-linux-g++ (GCC) 4.2.0 20070124
> (prerelease) - BRCM 11ts-20090508. I don't have any control over this as
> its provided by the chip manufacturer.
>
> I can build Boost without any reported errors and can link to and use
> most of the libraries without any problems. However, when WebSockets
> tries to link to the Boost::asio library I get link errors like this:
>
> (.gnu.linkonce.t._ZNSt5dequeIN5boost13intrusive_ptrIN11websocketpp7message4dataEEESaIS5_EE16_M_push_back_auxERKS5_+0x30):
> undefined reference to `__sync_add_and_fetch_4'
>
> (.gnu.linkonce.t._ZNSt5dequeIN5boost13intrusive_ptrIN11websocketpp7message4dataEEESaIS5_EE16_M_push_back_auxERKS5_+0x80):
> undefined reference to `__sync_add_and_fetch_4'
>
> (.gnu.linkonce.t._ZN11websocketpp9processor4hybiINS_10connectionINS_8endpointINS_4role6serverENS_6socket5plainENS_3log6loggerEEENS5_ISA_E10connectionENS7_ISA_E10connectionEEEE19prepare_close_frameEN5boost13intrusive_ptrINS_7message4dataEEENS_5close6status5valueERKSs+0xc8):
> more undefined references to `__sync_add_and_fetch_4' follow
>
> I've done enough research to find this has been a problem in the past
> with ARM chips and is to do with atomic transactions not being
> implemented by gcc for the target machine. I've tried the suggested
> fixes for ARM which were to build with either BOOST_SP_DISABLE_THREADS
> or BOOST_SP_USE_PTHREADS but that didn't help with my MIPS environment.
>
> Can anyone make any suggestions as to what I could try next?
>
> thanks,
>
> Jayne.
>
Try this #define:
BOOST_ASIO_DISABLE_FENCED_BLOCK
--
Dipl.-Ing. (FH) Andreas Wehrmann
Software Development
--------------------------------------------------------------
Center Communication Systems GmbH
Sitz in Wien
FN 796 88p, Firmenbuchgericht Wien
http://www.centersystems.com">www.centersystems.com
Tel.: +43 (0) 190 199 - 3616
Mobile: +43 (0) 664 884 75916
Fax: +43 (0) 190 199 - 2110
E-Mail: a.wehrmann@centersystems.com
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users">http://lists.boost.org/mailman/listinfo.cgi/boost-users