Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > компиляция с boost не компилица


Автор: americanets 24.9.2008, 10:22
с вики код 

Код

#include <boost/regex.hpp>
#include <vector>
#include <string>
 
// Пример программы разбора URL
int main(int argc, char** argv)
{
// Проверка на число параметров
    if (argc < 2) return 0;
 
// Контейнер для значений
std::vector<std::string> values;
// Выражение для разбора
boost::regex expression(
//       proto                 host               port
        "^(\?:([^:/?#]+)://)\?(\\w+[^/?#:]*)(\?::(\\d+))\?"
//       path                  file       parameters
        "(/\?(\?:[^?#/]*/)*)\?([^?#]*)\?(\\\?(.*))\?"
                       );
// Формирование исходной строки для разбора (берется из командной строки)
std::string src(argv[1]);
 
    // Разбор и заполнение контейнера
    if (boost::regex_split(std::back_inserter(values), src, expression))
    {
        // Вывод результата
        const char* names[] = {"Protocol", "Host", "Port", "Path", "File", "Parameters", NULL};
        for (int i = 0; names[i]; i++)
            printf("%s: %s\n", names[i], values[i].c_str());
    }
    return 0;
}




компилил g++ руками 

компилил bjam 

Jamroot

Код

exe hello : test.cpp ;






Код

~/cpp/boost$ bjam
...found 11 targets...
...updating 2 targets...
gcc.compile.c++ bin/gcc/debug/test.o
gcc.link bin/gcc/debug/hello
bin/gcc/debug/test.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
/usr/include/boost/regex/v4/basic_regex.hpp:255: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
bin/gcc/debug/test.o: In function `perl_matcher':
/usr/include/boost/regex/v4/perl_matcher.hpp:335: undefined reference to `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, 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)'
bin/gcc/debug/test.o: In function `boost::cpp_regex_traits<char>::transform(char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:876: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
bin/gcc/debug/test.o: In function `boost::cpp_regex_traits<char>::transform_primary(char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:880: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
bin/gcc/debug/test.o: In function `save_state_init':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:96: undefined reference to `boost::re_detail::get_mem_block()'
bin/gcc/debug/test.o: In function `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match_match()':
/usr/include/boost/regex/v4/perl_matcher_common.hpp:468: undefined reference to `boost::match_results<__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_string<char, std::char_traits<char>, std::allocator<char> > > > > >::maybe_assign(boost::match_results<__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_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&)'
bin/gcc/debug/test.o: In function `boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:424: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:426: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
bin/gcc/debug/test.o: In function `void boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type)':
/usr/include/boost/regex/pattern_except.hpp:68: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
bin/gcc/debug/test.o: In function `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack()':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:186: undefined reference to `boost::re_detail::get_mem_block()'
bin/gcc/debug/test.o: In function `unsigned int boost::regex_grep<boost::re_detail::split_pred<std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, std::char_traits<char>, std::allocator<char> >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(boost::re_detail::split_pred<std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, std::char_traits<char>, std::allocator<char> >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':
/usr/include/boost/regex/v4/regex_grep.hpp:63: undefined reference to `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
/usr/include/boost/regex/v4/regex_grep.hpp:48: undefined reference to `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
bin/gcc/debug/test.o: In function `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool)':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:965: undefined reference to `boost::re_detail::put_mem_block(void*)'
bin/gcc/debug/test.o: In function `~save_state_init':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:104: undefined reference to `boost::re_detail::put_mem_block(void*)'
bin/gcc/debug/test.o: In function `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_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp()':
/usr/include/boost/regex/v4/perl_matcher_common.hpp:279: undefined reference to `boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)'
collect2: выполнение ld завершилось с кодом возврата 1

    "g++"    -o "bin/gcc/debug/hello" -Wl,--start-group "bin/gcc/debug/test.o"    -Wl,--end-group -g 

...failed gcc.link bin/gcc/debug/hello...
...failed updating 1 target...
...updated 1 target...




ОС Ubuntu 8 04 / boost из репозитория пакетов убунты поставлен


что не так ? как компилить с boost ? 

Автор: vinick 24.9.2008, 11:56
Код

g++ -o hello test.cpp -lboost_regex


Компилится

Автор: americanets 24.9.2008, 13:12
Цитата(vinick @  24.9.2008,  12:56 Найти цитируемый пост)
g++ -o hello test.cpp -lboost_regex

да спасибо а как быть с bjam ?

Автор: vinick 24.9.2008, 15:47
Цитата(americanets @  24.9.2008,  13:12 Найти цитируемый пост)
да спасибо а как быть с bjam ? 

Я с bjam плохо знаком...
А по аналогии с boost/libs/regex/example/Jamfile.v2 не получается?

Код

project
    : requirements <threading>multi <link>shared:<define>BOOST_REGEX_DYN_LINK=1
    ;




Автор: americanets 24.9.2008, 15:53
что то не хочет по аналогии ну и ладно , главное что можно собирать и так без bjam 
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)