Update: I've given up on clang. I never did figure out how to tell cmake and/or acprep to pass a new option like "-stdlib=..." to the compilation phase. I assume it's possible somehow. So I ended up grabbing the compilation commands cmake produced and copying them into a script and I manually added the option you suggested and recompiled. Then it complained about not finding several standard include library files.
So I am now trying g++. Again, due to cmake brain-damage^H^H^H^H^H^H^H^H^H^H^H^H opaqueness, it insists on using clang. (Grrr! I promised myself I wouldn't rant about cmake, but geeez!) I eventually had to remove the execute permission from /usr/bin/clang and symlink g++ to clang++ and other atrocities but eventually I got the compilation to work under g++ 4.8.4 However linking is still a problem: Boost is complaining about not finding "perl_matcher" and a few other errors, attached below. Has *anyone* successfully compiled Ledger on FreeBSD 10??? Linking CXX executable ../ledger CMakeFiles/ledger.dir/main.cc.o: In function `bool boost::regex_search<char const*, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, c har const*, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)': /usr/local/include/boost/regex/v4/regex_search.hpp:145: undefined reference to `boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char con st*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()' CMakeFiles/ledger.dir/main.cc.o: In function `boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost ::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, char const*)': /usr/local/include/boost/regex/v4/perl_matcher.hpp:374: undefined reference to `boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char con st*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)' ../libledger.so.3: undefined reference to `boost::iostreams::file_descriptor::seek(long, std::_Ios_Seekdir)' ../libledger.so.3: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()' ../libledger.so.3: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)' ../libledger.so.3: undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::string&, std::codecvt<wchar_t, char, __mbstate_t> const&)' ../libledger.so.3: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()' collect2: error: ld returned 1 exit status *** Error code 1 On Thu, Jun 26, 2014 at 2:54 AM, Jostein Berntsen <[email protected]> wrote: > > > On Tuesday, June 24, 2014 8:30:38 PM UTC+2, Chris Leyon wrote: >> >> I'm having difficulties compiling the latest Ledger code on FreeBSD >> 10.0 (well, PC-BSD actually) with clang and Boost 1.55.0. I followed >> some suggested commands, step 2 from Thierry on 2014-05-04 in message >> <[email protected]>. I include the >> output below. If anyone has any suggestions for fixing this bug or >> compiling on FreeBSD I would be very happy to hear them. Until then, >> my ledgering is out of commission for a while..... >> >> Thanks for any help, >> Chris >> >> >> ----------8<--------------------8<--------------------8<---------- >> >> cleyon@rosso:ledger-2014-06-24$ rm -rf ledger/ >> >> cleyon@rosso:ledger-2014-06-24$ git clone >> git://github.com/ledger/ledger.git >> Cloning into 'ledger'... >> remote: Reusing existing pack: 32431, done. >> remote: Total 32431 (delta 0), reused 0 (delta 0) >> Receiving objects: 100% (32431/32431), 14.13 MiB | 5.33 MiB/s, done. >> Resolving deltas: 100% (24322/24322), done. >> Checking connectivity... done. >> >> cleyon@rosso:ledger-2014-06-24$ cd ledger/ >> >> cleyon@rosso:ledger$ git submodule update --init >> Submodule 'lib/utfcpp' (http://github.com/ledger/utfcpp.git) >> registered for path 'lib/utfcpp' >> Cloning into 'lib/utfcpp'... >> remote: Reusing existing pack: 37, done. >> remote: Total 37 (delta 0), reused 0 (delta 0) >> Unpacking objects: 100% (37/37), done. >> Checking connectivity... done. >> Submodule path 'lib/utfcpp': checked out >> '2233ec933f5661c7050b94d3b14f5f9f51ae3d55' >> >> cleyon@rosso:ledger$ cmake . -DUSE_DOXYGEN=1 -DUSE_PYTHON=1 >> -- The C compiler identification is Clang 3.3.0 >> -- The CXX compiler identification is Clang 3.3.0 >> -- Check for working C compiler: /usr/bin/cc >> -- Check for working C compiler: /usr/bin/cc -- works >> -- Detecting C compiler ABI info >> -- Detecting C compiler ABI info - done >> -- Check for working CXX compiler: /usr/bin/CC >> -- Check for working CXX compiler: /usr/bin/CC -- works >> -- Detecting CXX compiler ABI info >> -- Detecting CXX compiler ABI info - done >> -- Found PythonInterp: /usr/local/bin/python (found version "2.7.6") >> -- Found PythonLibs: /usr/local/lib/libpython2.7.so (found version >> "2.7.6") >> -- Boost version: 1.55.0 >> -- Found the following Boost libraries: >> -- date_time >> -- filesystem >> -- system >> -- iostreams >> -- regex >> -- unit_test_framework >> -- python >> -- Looking for access >> -- Looking for access - found >> -- Looking for realpath >> -- Looking for realpath - found >> -- Looking for getpwuid >> -- Looking for getpwuid - found >> -- Looking for getpwnam >> -- Looking for getpwnam - found >> -- Looking for isatty >> -- Looking for isatty - found >> -- Performing Test UNIX_PIPES_COMPILES >> -- Performing Test UNIX_PIPES_COMPILES - Success >> -- Performing Test BOOST_REGEX_UNICODE_RUNS >> -- Performing Test BOOST_REGEX_UNICODE_RUNS - Failed >> -- Looking for readline in edit >> -- Looking for readline in edit - found >> -- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.3.1") >> -- Configuring done >> -- Generating done >> -- Build files have been written to: >> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger >> >> cleyon@rosso:ledger$ make >> Scanning dependencies of target libledger >> [ 1%] Building CXX object src/CMakeFiles/libledger.dir/stats.cc.o >> [ 2%] Building CXX object src/CMakeFiles/libledger.dir/generate.cc.o >> [ 4%] Building CXX object src/CMakeFiles/libledger.dir/csv.cc.o >> [ 5%] Building CXX object src/CMakeFiles/libledger.dir/convert.cc.o >> [ 6%] Building CXX object src/CMakeFiles/libledger.dir/draft.cc.o >> [ 8%] Building CXX object src/CMakeFiles/libledger.dir/emacs.cc.o >> [ 9%] Building CXX object src/CMakeFiles/libledger.dir/org.cc.o >> [ 10%] Building CXX object src/CMakeFiles/libledger.dir/ptree.cc.o >> [ 12%] Building CXX object src/CMakeFiles/libledger.dir/print.cc.o >> [ 13%] Building CXX object src/CMakeFiles/libledger.dir/output.cc.o >> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:294:48: >> error: no viable conversion from >> '__map_iterator<__tree_iterator<union std::__1::map<class >> ledger::account_t *, unsigned long, struct ledger::account_compare, >> class std::__1::allocator<struct std::__1::pair<class >> ledger::account_t *const, unsigned long> > >::__value_type, class >> std::__1::__tree_node<union std::__1::map<class >> ledger::account_t *, unsigned long, struct ledger::account_compare, >> class >> std::__1::allocator<struct std::__1::pair<class >> ledger::account_t *const, unsigned long> > >::__value_type, void *> *, >> [...]>>' to '__map_iterator<__tree_iterator<union >> std::__1::map<class ledger::account_t *, unsigned long, struct >> std::__1::less<class ledger::account_t *>, class >> std::__1::allocator<struct std::__1::pair<class ledger::account_t >> *const, >> unsigned long> > >::__value_type, class >> std::__1::__tree_node<union std::__1::map<class ledger::account_t *, >> unsigned long, >> struct std::__1::less<class ledger::account_t *>, class >> std::__1::allocator<struct std::__1::pair<class ledger::account_t >> *const, unsigned long> > >::__value_type, void *> *, [...]>>' >> std::map<account_t *, std::size_t>::iterator i = >> accounts.find(post.account); >> ^ >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit copy constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> 'const >> >> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::account_t >> *, unsigned long, >> std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned >> long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned >> long, std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, >> unsigned long> > >::__value_type, void *> *, long> > &' for 1st >> argument >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit move constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> >> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::account_t >> *, unsigned long, >> std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned >> long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned >> long, std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, >> unsigned long> > >::__value_type, void *> *, long> > &&' for 1st >> argument >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable: >> no known conversion from 'iterator' (aka >> '__map_iterator<typename __base::iterator>') to >> 'std::__1::__tree_iterator<std::__1::map<ledger::account_t *, unsigned >> long, >> std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned >> long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned >> long, std::__1::less<ledger::account_t *>, >> std::__1::allocator<std::__1::pair<ledger::account_t *const, >> unsigned long> > >::__value_type, void *> *, long>' for 1st >> argument >> __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {} >> ^ >> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:365:50: >> error: no viable conversion from >> '__map_iterator<__tree_iterator<union std::__1::map<class >> ledger::commodity_t *, unsigned long, struct >> ledger::commodity_compare, class std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> > >> >::__value_type, class std::__1::__tree_node<union >> std::__1::map<class ledger::commodity_t *, unsigned long, struct >> ledger::commodity_compare, class std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> > >> >::__value_type, void *> *, [...]>>' to >> '__map_iterator<__tree_iterator<union std::__1::map<class >> ledger::commodity_t *, >> unsigned long, struct std::__1::less<class ledger::commodity_t >> *>, class std::__1::allocator<struct std::__1::pair<class >> ledger::commodity_t *const, unsigned long> > >::__value_type, >> class std::__1::__tree_node<union std::__1::map<class >> ledger::commodity_t *, unsigned long, struct >> std::__1::less<class ledger::commodity_t *>, class >> std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> >> > >::__value_type, void *> *, [...]>>' >> std::map<commodity_t *, std::size_t>::iterator i = >> commodities.find(&comm); >> ^ >> ~~~~~~~~~~~~~~~~~~~~~~~ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit copy constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> 'const >> >> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t >> *, unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long> > &' for >> 1st argument >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit move constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> >> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t >> *, unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long> > &&' >> for 1st argument >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable: >> no known conversion from 'iterator' (aka >> '__map_iterator<typename __base::iterator>') to >> 'std::__1::__tree_iterator<std::__1::map<ledger::commodity_t *, >> unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long>' for 1st >> argument >> __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {} >> ^ >> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:374:54: >> error: no viable conversion from >> '__map_iterator<__tree_iterator<union std::__1::map<class >> ledger::commodity_t *, unsigned long, struct >> ledger::commodity_compare, class std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> > >> >::__value_type, class std::__1::__tree_node<union >> std::__1::map<class ledger::commodity_t *, unsigned long, struct >> ledger::commodity_compare, class std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> > >> >::__value_type, void *> *, [...]>>' to >> '__map_iterator<__tree_iterator<union std::__1::map<class >> ledger::commodity_t *, >> unsigned long, struct std::__1::less<class ledger::commodity_t >> *>, class std::__1::allocator<struct std::__1::pair<class >> ledger::commodity_t *const, unsigned long> > >::__value_type, >> class std::__1::__tree_node<union std::__1::map<class >> ledger::commodity_t *, unsigned long, struct >> std::__1::less<class ledger::commodity_t *>, class >> std::__1::allocator<struct >> std::__1::pair<class ledger::commodity_t *const, unsigned long> >> > >::__value_type, void *> *, [...]>>' >> std::map<commodity_t *, std::size_t>::iterator ii = >> ^ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit copy constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> 'const >> >> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t >> *, unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long> > &' for >> 1st argument >> >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:499:24: note: candidate constructor (the >> implicit move constructor) not viable: no known conversion from >> 'iterator' (aka '__map_iterator<typename __base::iterator>') to >> >> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t >> *, unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long> > &&' >> for 1st argument >> class _LIBCPP_TYPE_VIS __map_iterator >> ^ >> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable: >> no known conversion from 'iterator' (aka >> '__map_iterator<typename __base::iterator>') to >> 'std::__1::__tree_iterator<std::__1::map<ledger::commodity_t *, >> unsigned long, >> std::__1::less<ledger::commodity_t *>, >> std::__1::allocator<std::__1::pair<ledger::commodity_t *const, >> unsigned long> > >> >::__value_type, >> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned >> long, std::__1::less<ledger::commodity_t >> *>, std::__1::allocator<std::__1::pair<ledger::commodity_t >> *const, unsigned long> > >::__value_type, void *> *, long>' for 1st >> argument >> __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {} >> ^ >> 3 errors generated. >> *** Error code 1 >> >> Stop. >> make[2]: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger >> *** Error code 1 >> >> Stop. >> make[1]: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger >> *** Error code 1 >> >> Stop. >> make: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger >> >> ----------8<--------------------8<--------------------8<---------- > > > clang seems to be a culprit in FreeBSD 10.0 for compiling some application > according to some searching on the web. Can you try to compile with this > option? > > "clang -stdlib=libstdc++ " > > Jostein > > > -- > > --- > You received this message because you are subscribed to the Google Groups > "Ledger" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- --- You received this message because you are subscribed to the Google Groups "Ledger" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
