I'm working on updating a package of mine (ledger) that uses the boost C++
suite (I'm using boost1.53.python27) as well as libicu48. I'm having some
trouble with the build and can't quite tell where the problem lies. Consider
this minature C++ program badboost.cpp (which occurs as one of the programs
during the config stage of ledger):
#include <boost/regex/icu.hpp>
using namespace boost;
int main() {
std::string text = "Активы";
u32regex r = make_u32regex("активы", regex::perl | regex::icase);
return u32regex_search(text, r) ? 0 : 1;
}
When compiling this, I get a linking error:
In file included from badboost.cpp:1:
In file included from /sw/include/boost/regex/icu.hpp:25:
In file included from /sw/include/boost/regex.hpp:31:
In file included from /sw/include/boost/regex/v4/regex.hpp:32:
In file included from /sw/include/boost/regex/v4/regex_workaround.hpp:43:
In file included from /sw/include/boost/shared_ptr.hpp:17:
/sw/include/boost/smart_ptr/shared_ptr.hpp:491:41: warning: rvalue references
are a C++11 extension [-Wc++11-extensions]
shared_ptr( std::unique_ptr< Y, D > && r ): px( r.get() ), pn()
^
/sw/include/boost/smart_ptr/shared_ptr.hpp:556:51: warning: rvalue references
are a C++11 extension [-Wc++11-extensions]
shared_ptr & operator=( std::unique_ptr<Y, D> && r )
^
/sw/include/boost/smart_ptr/shared_ptr.hpp:558:55: warning: rvalue references
are a C++11 extension [-Wc++11-extensions]
this_type( static_cast< std::unique_ptr<Y, D> && >( r ) ).swap(*this);
^
3 warnings generated.
Undefined symbols for architecture x86_64:
"boost::basic_regex<int, boost::icu_regex_traits>::do_assign(int const*, int
const*, unsigned int)", referenced from:
boost::basic_regex<int, boost::icu_regex_traits>::assign(int const*, int
const*, unsigned int) in badboost-2044fe.o
"boost::re_detail::get_mem_block()", referenced from:
boost::re_detail::save_state_init::save_state_init(boost::re_detail::saved_state**,
boost::re_detail::saved_state**) in badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::extend_stack() in
badboost-2044fe.o
"boost::re_detail::put_mem_block(void*)", referenced from:
boost::re_detail::save_state_init::~save_state_init() in badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::unwind_extra_block(bool) in
badboost-2044fe.o
"boost::re_detail::verify_options(unsigned int,
boost::regex_constants::_match_flags)", referenced from:
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::find_imp() in badboost-2044fe.o
"boost::re_detail::raise_runtime_error(std::runtime_error const&)",
referenced from:
void
boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::icu_regex_traits>
>(boost::regex_traits_wrapper<boost::icu_regex_traits> const&,
boost::regex_constants::error_type) in badboost-2044fe.o
"boost::re_detail::get_default_error_string(boost::regex_constants::error_type)",
referenced from:
boost::icu_regex_traits::error_string(boost::regex_constants::error_type)
const in badboost-2044fe.o
"boost::re_detail::is_combining_implementation(unsigned short)", referenced
from:
bool boost::re_detail::is_combining<int>(int) in badboost-2044fe.o
"boost::icu_regex_traits::isctype(int, unsigned long long) const", referenced
from:
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::find_restart_word() in
badboost-2044fe.o
boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int>
boost::re_detail::re_is_set_member<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>, int, boost::icu_regex_traits, unsigned long
long>(boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int>,
boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int>,
boost::re_detail::re_set_long<unsigned long long> const*,
boost::re_detail::regex_data<int, boost::icu_regex_traits> const&, bool) in
badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::match_word_boundary() in
badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::match_within_word() in
badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::match_word_start() in
badboost-2044fe.o
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int>,
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
const*>, int> > >, boost::icu_regex_traits>::match_word_end() in
badboost-2044fe.o
"boost::re_detail::icu_regex_traits_implementation::do_transform(int const*,
int const*, icu_48::Collator const*) const", referenced from:
boost::re_detail::icu_regex_traits_implementation::transform_primary(int
const*, int const*) const in badboost-2044fe.o
boost::re_detail::icu_regex_traits_implementation::transform(int const*,
int const*) const in badboost-2044fe.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Is there some kind of binary incompatibility problem here?
Jesse
------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Fink-devel mailing list
[email protected]
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel