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


Автор: cupper 28.10.2010, 22:36
Помогите разобраться с процессом установки и последующим использованием boost'a. Заветной странички в документации я так и не нашел (вернее я так думаю). Интуитивно поставил boost из репов (apt-get install libboost-dev) но если просто компилировать без указание каких либо опций для g++ то компиляции конечно не проходит и вылазит куча ошибок о том что он етого не нашел, этого не знает и т.д.

Подскажите как правильно начать. Заранее спасибо. Система ubuntu 10.10

Автор: boostcoder 28.10.2010, 23:00
покажи код + командную_строку + сообщения

Автор: cupper 29.10.2010, 08:59
а так и думал что это попросят, поэтому и не написал этого. Я не хотел бы найти решение в данном частном случае, а хотел понять общую концепцию, или чтоб просто направили туда где это уже написано.

код взят от сюда http://beta.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tuttimer5/src.html
как я уже сказал командная строка была без параметров, g++ name.cpp -o name
ошибки типа undefined reference boost::thread... и обычный ld когда либы не
находит. 

Да я пробывал -lpthread, -lboost-pthread, -lboost-system, тогда ошибка что он именно эти либы не находит. 

Еще раз повторюсь, я не хотел бы найти ответ для данного конкретного случая, потому что на следующем примере будут новые ошибки. Я хотел бы понять концепцию что бы в следующий раз уже знать что искать.

Автор: xvr 29.10.2010, 11:49
-l<имя твой boost библиотеки> -L<путь к boost библиотекам>

Автор: boostcoder 29.10.2010, 12:05
Цитата(cupper @ 29.10.2010,  08:59)
а так и думал что это попросят, поэтому и не написал этого. Я не хотел бы найти решение в данном частном случае, а хотел понять общую концепцию, или чтоб просто направили туда где это уже написано.

код взят от сюда http://beta.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tuttimer5/src.html
как я уже сказал командная строка была без параметров, g++ name.cpp -o name
ошибки типа undefined reference boost::thread... и обычный ld когда либы не
находит. 

Да я пробывал -lpthread, -lboost-pthread, -lboost-system, тогда ошибка что он именно эти либы не находит. 

Еще раз повторюсь, я не хотел бы найти ответ для данного конкретного случая, потому что на следующем примере будут новые ошибки. Я хотел бы понять концепцию что бы в следующий раз уже знать что искать.

ни о чем..

Добавлено @ 12:07
Цитата(xvr @  29.10.2010,  11:49 Найти цитируемый пост)
-l<имя твой boost библиотеки> -L<путь к boost библиотекам>

если буст и в правду установлен из репозитариев, то он лежит в /usr/include и /usr/lib

Автор: cupper 29.10.2010, 12:51
Цитата(boostcoder @ 29.10.2010,  12:05)
Добавлено @ 12:07
Цитата(xvr @  29.10.2010,  11:49 Найти цитируемый пост)
-l<имя твой boost библиотеки> -L<путь к boost библиотекам>

если буст и в правду установлен из репозитариев, то он лежит в /usr/include и /usr/lib

да, в /usr/include хедеры по крайней мере точно есть, и либлы вероятно тоже на месте. тогда получается нужно указывать только параметр -l... но какой ? возмож но я сглупил и либы вместо boost-pthread, называется как то по другому в моей системе. Приду домой залезу посмотрю названия и попробую.

Автор: boostcoder 29.10.2010, 12:55
Цитата(cupper @  29.10.2010,  12:51 Найти цитируемый пост)
возмож но я сглупил и либы вместо boost-pthread

конечно smile 
не понятно с какого фонаря вы вообще взяли такие имена библиотек. smile 

Автор: bsa 29.10.2010, 16:50
рекомендую ставить пакет libboost-all-dev, в этом случае поставятся все библиотеки, входящие в boost, и все хидеры.

Автор: cupper 29.10.2010, 19:37
Цитата(bsa @ 29.10.2010,  16:50)
рекомендую ставить пакет libboost-all-dev, в этом случае поставятся все библиотеки, входящие в boost, и все хидеры.

пропустил этот пакет когда искал, установил его. Собрал предыдущий тестовый пример так
g++ asio.cpp -o asio -lboost_thread -lboost_system
тут все понятно. 
Беру сразу следующий пример уже с использованием asio, конечно же не знаю какие либы подключать, в /usr/lib по грепу на asio  пусто, собираю без -l, получаю ошибки, первые жалуются на boost::system, далее на boost::asio, не долго думая подключаю
g++ asio.cpp -o asio  -lboost_system и бац... оно собирается. Хммм, ведь там не boost::system::asio а просто boost::asio тогда почему собралось ? и как узнать для каких частей буста какие либы подключать ?

Автор: boostcoder 29.10.2010, 19:41
Цитата(cupper @  29.10.2010,  19:37 Найти цитируемый пост)
Беру сразу следующий пример уже с использованием asio, конечно же не знаю какие либы подключать, в /usr/lib по грепу на asio  пусто, собираю без -l, получаю ошибки, первые жалуются на boost::system, далее на boost::asio, не долго думая подключаю
g++ asio.cpp -o asio  -lboost_system и бац... оно собирается. Хммм, ведь там не boost::system::asio а просто boost::asio тогда почему собралось ? и как узнать для каких частей буста какие либы подключать ? 

ничего не понял smile

Добавлено через 59 секунд
boost_system линковать нужно всегда. потому у нее и имя такое.
asio - header only либа. ее ваще линковать не нужно.

Добавлено через 2 минуты
Цитата(boostcoder @  29.10.2010,  19:41 Найти цитируемый пост)
первые жалуются на boost::system, далее на boost::asio

вы ошибки компиляции от ошибок линковки не отличаете.

Автор: cupper 29.10.2010, 20:41
спасибо, теперь боле менее понятно. Для меня тема boost & lib & dll пока лес гремучий, поэтому все путаю и мало чего понимаю.

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