前回,LEMON Graph Libraryのインストールに成功した.
と思ったが,そのライブラリを使うプログラムをコンパイルしてみたところ,うまく行かなかったのでメモ.
※この記事はLEMON Graph Libraryが悪いのではなく,brewで普通に入れたBoostと一緒に使おうとしたのが原因です
症状は,リンク時にリンカエラーで,boost::regex系の何かがないと言われる次のようなもの.
"boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std ::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::all ocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_st ring<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_t raits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_rege x<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boo st::regex_constants::_match_flags)", referenced from: boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std:: allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic …
これの原因はおそらく,入れてるBoostがclangでコンパイルされているのに対して,lemonがgcc49でコンパイルされていることだと思う.
これを回避するには,Boostのbrewするときに –interactive で gcc49 を使ってインストールすれば良いと思うが,他のBoostを使っているプログラムにも影響が出そうなのでまだ試していない.