On Thu, Nov 26, 2009 at 11:55 AM, Peter <peter@xxxxxxxxxxxxxxxxxxxxx> wrote: > On Tue, Nov 24, 2009 at 5:17 PM, Bastien Chevreux <bach@xxxxxxxxxxxx> wrote: >> >> On Dienstag 24 November 2009 Peter wrote: >>> From watching this in the activity monitor, I think this is failing at >>> the 4GB memory boundary - and I noticed that the log says it was >>> compiled in 32 bit mode. Is this likely to be the problem? Any tips >>> for ensuring MIRA compiles in 64bit mode? >> >> Hmmm, compiling under Apple always has some surprises it seems. >> >> Make clean, then use "-enable-64" as one of the switches to the configure >> script, then make all. Should do the trick. > > OK, I did a "make clean", then: > > $ ./configure -enable-64 --with-boost=/Users/myusername/ > ... > We are building on ............................... Darwin > CPU supports 64 bit? ......... ................... no > Compiler ......................................... gcc > ... > > Clearly the configure script doesn't recognise my Quad-Core Intel > Xeon CPUs as supporting 64bit. i.e. has_int64_t isn't being set. As an experiment, I edited the configure script to tell it to use the -m64 flag to gcc under Darwin (i.e. on Mac OS X) as well as on SunOS: if test "${systemuname}" = "SunOS" || test "${systemuname}" = "Darwin"; then if test "$CC" = "gcc"; then CFLAGS="$CFLAGS -m64" CXXFLAGS="$CXXFLAGS -m64" LDFLAGS="$LDFLAGS -m64" fi fi Then I get using: $ ./configure --with-boost=/Users/myusername/ or: $ ./configure -enable-64 --with-boost=/Users/myusername/ ... We are building on ............................... Darwin CPU supports 64 bit? ......... ................... yes Compiler ......................................... gcc -n Compiler optimisation flags used ................. -O2 Do we compile in 64 bit? ......................... yes ... Which looks promising. I then re-ran "make clean" and "make", and it compiled part way before failing: ld: warning in /Users/myusername/lib/libboost_thread.dylib, file is not of required architecture Undefined symbols: Undefined symbols: "typeinfo for boost::lock_error", referenced from: void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) "boost::thread::join()", referenced from: Skim::checkForHashes(signed char)in libmira.a(skim.o) "boost::detail::thread_data_base::~thread_data_base()", referenced from: boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf1<void, Skim, unsigned int>, boost::_bi::list2<boost::reference_wrapper<Skim>, boost::_bi::value<unsigned int> > > >::~thread_data()in libmira.a(skim.o) boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf1<void, Skim, unsigned int>, boost::_bi::list2<boost::reference_wrapper<Skim>, boost::_bi::value<unsigned int> > > >::~thread_data()in libmira.a(skim.o) "boost::thread::start_thread()", referenced from: Skim::checkForHashes(signed char)in libmira.a(skim.o) "typeinfo for boost::thread_resource_error", referenced from: Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) "boost::thread::~thread()", referenced from: Skim::checkForHashes(signed char)in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) "typeinfo for boost::detail::thread_data_base", referenced from: typeinfo for boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf1<void, Skim, unsigned int>, boost::_bi::list2<boost::reference_wrapper<Skim>, boost::_bi::value<unsigned int> > > >in libmira.a(skim.o) "vtable for boost::detail::thread_data_base", referenced from: boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) "boost::thread_resource_error::thread_resource_error()", referenced from: Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) "boost::thread_resource_error::~thread_resource_error()", referenced from: Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::Skim() in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) Skim::checkForHashes(signed char)in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) boost::detail::thread_data_base::thread_data_base()in libmira.a(skim.o) "boost::lock_error::lock_error()", referenced from: void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) "boost::detail::get_current_thread_data()", referenced from: void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) "boost::lock_error::~lock_error()", referenced from: void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&)in libmira.a(skim.o) ld: symbol(s) not found collect2: ld returned 1 exit status make[2]: *** [mira_101] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive] Error 1 This looks like some BOOST 64 bit specific problem that I don't understand. If I go back to 32bit mode, $ ./configure -enable-64=no --with-boost=/Users/myusername/ ... We are building on ............................... Darwin CPU supports 64 bit? ......... ................... no Compiler ......................................... gcc Then "make clean" and "make" work as before. Peter -- You have received this mail because you are subscribed to the mira_talk mailing list. For information on how to subscribe or unsubscribe, please visit http://www.chevreux.org/mira_mailinglists.html