crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> BGL, bjam, gcc, icc, Сборка приложения boost. Нужна помощь
e.ustimenko
  опции профиля:
сообщение 10.2.2011, 13:27
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 10.2.2011
Пользователь №: 2402

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет. Меня зовут Евгений.

У меня возникла потребность в boost, а точнее в BGL в связи с моим дипломом.

Проблема моя состоит в следующем: не могу собрать до конца приложение. То есть, на этапе компиляции все проходит замечательно, а на этапе линковки начинает гнать какую-то фигню про то, что очень нуждается в дополнительных библиотеках.

Вот текст ошибки:

icpc -o"ShortGraphWay" ./src/searchShortWay/SearchShortWay.o ./src/main.o ./src/interface/Interface.o
./src/searchShortWay/SearchShortWay.o: In function `SearchShortWay::openGraphvizFile(std::string)':
../src/searchShortWay/SearchShortWay.cpp:(.text+0x38cf): undefined reference to `boost::detail::graph::read_graphviz(std::string const&, boost::detail::graph::mutate_graph*)'


Собираю компилятором Intel.

Погуглил основательно часа три - четыре, нашел следующие вещи:
1. Надо при сборке BGL использовать libbgl-viz. http://www.cs.brown.edu/~jwicks/boost/libs...d-graphviz.html

Собрал, как написано, проставил в опциях Eclipse. Он ее не видит

icpc -L/home/evgeny/searchshortway/lib -o"ShortGraphWay" ./src/searchShortWay/SearchShortWay.o ./src/main.o ./src/interface/Interface.o -llibbgl-viz
ld: cannot find -llibbgl-viz


2. Надо собирать не стандартными компиляторами, а специальным bjam

Тут вообще веселье началось. Поставить, поставил, а вот настроить не могу. Лезу в файлик /usr/share/boost-build/user-config.jam
Пытаюсь раскомментировать строчку с использованием gcc, он мне в ответ на команду bjam <требуемый файл> говорит, что у меня продублирован gcc. Intel я не рискнул использовать, так как не могу найти, в каком из файлом прописывается путь к компилятору.

Вот такая вот запара, манов по этому делу найти вообще не могу ни на английском, ни на русском языках.

Если сталктвались с такой проблемой, буду очень признателен за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 10.2.2011, 13:43
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1609
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


что-то у тебя каша в голове:
bjam - это НЕ КОМПИЛЯТОР. это аналог autotools, если угодно - т.е. система для автоматической сборки проектов.
bjam юзает конкретный компилятор, который ты ему укажешь. указывается он через bootstrap или непосредственно при вызове bjam для запуска компиляции boost.

чтобы детально разобраться - пиши конфиги, с которыми ты собирал буст и твои конфиги. линковщик может не найти модуль по двум причинам: неправильно задано имя, либо не совпадает битность (32 и 64). это стандартные ошибки, но может быть и что-то экзотическое, мало ли...

Сообщение отредактировал Iron Bug - 10.2.2011, 13:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
e.ustimenko
  опции профиля:
сообщение 10.2.2011, 13:57
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 10.2.2011
Пользователь №: 2402

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 10.2.2011, 16:43) *
что-то у тебя каша в голове:
bjam - это НЕ КОМПИЛЯТОР. это аналог autotools, если угодно - т.е. система для автоматической сборки проектов.
bjam юзает конкретный компилятор, который ты ему укажешь. указывается он через bootstrap или непосредственно при вызове bjam для запуска компиляции boost.

чтобы детально разобраться - пиши конфиги, с которыми ты собирал буст и твои конфиги. линковщик может не найти модуль по двум причинам: неправильно задано имя, либо не совпадает битность (32 и 64). это стандартные ошибки, но может быть и что-то экзотическое, мало ли...


Boost ставился из репозитория, собирать я его не стал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 10.2.2011, 14:07
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1609
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


что значит
Цитата(e.ustimenko @ 10.2.2011, 15:57) *
ставился из репозитория
?
т.е. скачан зип с бинарниками для конкретного компилятора? репозиторий - это обычно сорц.
к тому же, у тебя в заголовке темы зачем-то стоят и gcc и icc разом. и это не очень понятно: что и с чем собирается и под какую систему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
e.ustimenko
  опции профиля:
сообщение 10.2.2011, 14:15
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 10.2.2011
Пользователь №: 2402

Спасибо сказали: 0 раз(а)




Репутация:   0  


Система Ubuntu 10.10.

Сборка не имеет значения, под каким компилятором. И тот, и другой стоят, просто в разных директориях.

Инсталяция прошла методом: sudo aptitude install <набор пакетов>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 10.2.2011, 14:17
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


Цитата(e.ustimenko @ 10.2.2011, 13:27) *
Собрал, как написано, проставил в опциях Eclipse. Он ее не видит

icpc -L/home/evgeny/searchshortway/lib -o"ShortGraphWay" ./src/searchShortWay/SearchShortWay.o ./src/main.o ./src/interface/Interface.o -llibbgl-viz
ld: cannot find -llibbgl-viz

правильно будет: -lbgl-viz, т.е. lib надо опустить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 10.2.2011, 14:22
Сообщение #7


Профессионал
*****

Группа: Модератор
Сообщений: 1609
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


DEADHUNT правильно написал. скорее всего, ошибка в названии библиотеки.

Цитата(e.ustimenko @ 10.2.2011, 16:15) *
Сборка не имеет значения, под каким компилятором.

представь себе, имеет. и далеко не всегда разные компиляторы генерят совместимый код. а тем более с разными опциями и под разные системы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
e.ustimenko
  опции профиля:
сообщение 10.2.2011, 14:23
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 10.2.2011
Пользователь №: 2402

Спасибо сказали: 0 раз(а)




Репутация:   0  


icpc -L/home/evgeny/searchshortway/lib -o"ShortGraphWay" ./src/searchShortWay/SearchShortWay.o ./src/main.o ./src/interface/Interface.o -lbgl-viz
./src/searchShortWay/SearchShortWay.o: In function `SearchShortWay::openGraphvizFile(std::string)':
../src/searchShortWay/SearchShortWay.cpp:(.text+0x38cf): undefined reference to `boost::detail::graph::read_graphviz(std::string const&, boost::detail::graph::mutate_graph*)'


Вот код функции:

GraphvizDigraph SearchShortWay::openGraphvizFile(string path)
{
    GraphvizDigraph g_dot;
    dynamic_properties dp;

    boost::read_graphviz(path, g_dot,dp);

    return g_dot;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 10.2.2011, 14:29
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


а в чём сакральный смысл использования icc для дипломной работы? скачай boost из репозитария и используй gcc, тогда проблем не возникнет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
e.ustimenko
  опции профиля:
сообщение 10.2.2011, 14:42
Сообщение #10


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 10.2.2011
Пользователь №: 2402

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(DEADHUNT @ 10.2.2011, 17:29) *
а в чём сакральный смысл использования icc для дипломной работы? скачай boost из репозитария и используй gcc, тогда проблем не возникнет.


Спасибо за совет, движение, конечно, есть, но вот ошибка

/usr/include/boost/graph/detail/read_graphviz_new.hpp:104: undefined reference to `boost::detail::graph::read_graphviz(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::detail::graph::mutate_graph*)'
collect2: ld returned 1 exit status
[
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 6.10.2022, 8:06