LINUX.ORG.RU

[boost]undefined reference to boost::*

 


0

2

ubuntu 10.04. Поставил boost

apt-get install libboost-all-dev
Простенький пример пропер. Попробовал заюзать чужой код, где использовалось boost::program_options , ругается на undefined reference, доставил еще libboost-1.40. по отдельности все, что просил - 0 эффекта. Снес ,использую --purge , поставил заново как в первый раз. Теперь ругается еще и на boost::gregorian. Что может быть?
ls /usr/lib | grep boost

libboost_date_time.a libboost_date_time-mt.a libboost_date_time-mt.so libboost_date_time.so libboost_filesystem.a libboost_filesystem-mt.a libboost_filesystem-mt.so libboost_filesystem.so libboost_graph.a libboost_graph-mt.a libboost_graph-mt.so libboost_graph.so libboost_graph.so.1.40.0 libboost_iostreams.a libboost_iostreams-mt.a libboost_iostreams-mt.so libboost_iostreams.so libboost_iostreams.so.1.40.0 libboost_math_c99.a libboost_math_c99f.a libboost_math_c99f-mt.a libboost_math_c99f-mt.so libboost_math_c99f.so libboost_math_c99f.so.1.40.0 libboost_math_c99l.a libboost_math_c99l-mt.a libboost_math_c99l-mt.so libboost_math_c99l.so libboost_math_c99l.so.1.40.0 libboost_math_c99-mt.a libboost_math_c99-mt.so libboost_math_c99.so libboost_math_c99.so.1.40.0 libboost_math_tr1.a libboost_math_tr1f.a libboost_math_tr1f-mt.a libboost_math_tr1f-mt.so libboost_math_tr1f.so libboost_math_tr1f.so.1.40.0 libboost_math_tr1l.a libboost_math_tr1l-mt.a libboost_math_tr1l-mt.so libboost_math_tr1l.so libboost_math_tr1l.so.1.40.0 libboost_math_tr1-mt.a libboost_math_tr1-mt.so libboost_math_tr1.so libboost_math_tr1.so.1.40.0 libboost_prg_exec_monitor.a libboost_prg_exec_monitor-mt.a libboost_prg_exec_monitor-mt.so libboost_prg_exec_monitor.so libboost_prg_exec_monitor.so.1.40.0 libboost_program_options.a libboost_program_options-mt.a libboost_program_options-mt.so libboost_program_options.so libboost_program_options.so.1.40.0 libboost_python.a libboost_python-mt-py26.a libboost_python-mt-py26.so libboost_python-py26.a libboost_python-py26.so libboost_regex.a libboost_regex-mt.a libboost_regex-mt.so libboost_regex.so libboost_regex.so.1.40.0 libboost_serialization.a libboost_serialization-mt.a libboost_serialization-mt.so libboost_serialization.so libboost_serialization.so.1.40.0 libboost_signals.a libboost_signals-mt.a libboost_signals-mt.so libboost_signals.so libboost_signals.so.1.40.0 libboost_system.a libboost_system-mt.a libboost_system-mt.so libboost_system.so libboost_thread.a libboost_thread-mt.a libboost_thread-mt.so libboost_thread.so libboost_unit_test_framework.a libboost_unit_test_framework-mt.a libboost_unit_test_framework-mt.so libboost_unit_test_framework.so libboost_unit_test_framework.so.1.40.0 libboost_wave.a libboost_wave-mt.a libboost_wave-mt.so libboost_wave.so libboost_wave.so.1.40.0 libboost_wserialization.a libboost_wserialization-mt.a libboost_wserialization-mt.so libboost_wserialization.so libboost_wserialization.so.1.40.0

★★
Ответ на: комментарий от reader

К сожалению, есть библиотека, уже закомпиленная, в ней производится вызов конструктора(то бишь создается экземпляр program_options) остальной код смысловой нагрузки не несет. Компилирую используя makefile, который генерится qmake-ом(досталось в наследство) но ничего qt-шного не используется.

blokant ★★
() автор топика

-lboost_program_options-mt делаешь?

Reset ★★★★★
()
Ответ на: комментарий от reader

LIBS += -L/usr/lib -lboost_program_options -lboost_date_time -lboost_system

blokant ★★
() автор топика
Ответ на: комментарий от Pavval

ger.cpp:(.text._ZN5boost9date_time15month_formatterINS_9gregorian10greg_monthENS0_13simple_formatIcEEcE12format_monthERKS3_RSo[boost::date_time::month_formatter<boost::gregorian::greg_month, boost::date_time::simple_format<char>, char>::format_month(boost::gregorian::greg_month const&, std::basic_ostream<char, std::char_traits<char> >&)]+0x32): undefined reference to `boost::gregorian::greg_month::as_short_string() const'
blokant ★★
() автор топика
Ответ на: комментарий от blokant

простой пример
#include <somedir/test.h>
компилятор будет искать в
/usr/include/somedir/test.h
А теперь представь, что путь к test.h будет скажем вот так
/usr/include/figvam/somedir/test.h
компилятор не найдет твой test.h и будет жаловаться так же, как выше с boost на не определенное объявление.

Как вариант, в Makefile добавить путь к хедерам. типа:
-I/usr/include/figvam/
тогда будет находить. Или в коде у себя исправить на
#include <figvam/somedir/test.h>

Punk
()
Ответ на: комментарий от Punk

Повторюсь, вызов этой ф-ии производится из уже скомпилированной библиотеки. До манипуляций с пакетами работало все , кроме program_options а теперь не работает ни один из модулей буста .И да, там где надо заинклудено так как у вас.

blokant ★★
() автор топика
Ответ на: комментарий от blokant

Так у тебя ж фейлится не main.cpp. Добавь дефайн в qmake.

Pavval ★★★★★
()
Ответ на: комментарий от Punk

годный вопрос... Часто у них изменения? Библиотека вызывает конструктор с кучей параметров(сужу по выводу компилятора, если не так - поправьте), но я такого конструктора в своей версии буста не нашел

blokant ★★
() автор топика
Ответ на: комментарий от blokant

в .pro файл чтоль? или параметром к вызову qmake?

blokant ★★
() автор топика
Ответ на: комментарий от blokant

хз даже что у тебя не так
zen@debian:~$ g++ -o main -lboost_date_time main.cpp && ./main
20111030
zen@debian:~$ dpkg -l | grep libboost | awk '{print $2}'
libboost-date-time-dev
libboost-date-time1.42-dev
libboost-date-time1.42.0
libboost-filesystem1.42.0
libboost-iostreams1.42-dev
libboost-iostreams1.42.0
libboost-regex1.42-dev
libboost-regex1.42.0
libboost-serialization1.42-dev
libboost-serialization1.42.0
libboost-system1.42.0
libboost-thread1.42.0
libboost1.42-dev


gcc version 4.4.5

Может остались от ручной сборки библиотеки в системе? Или из сорцов не собирал?

Punk
()
Ответ на: комментарий от Punk

Нет, с репозитория. Но, как уже описывал выше, балы переустановка пакетов, поведение менялось.


dpkg -l | grep libboost | awk '{print $2}'
libboost-all-dev
libboost-date-time1.40-dev
libboost-date-time1.40.0
libboost-filesystem1.40-dev
libboost-filesystem1.40.0
libboost-graph1.40-dev
libboost-graph1.40.0
libboost-iostreams1.40-dev
libboost-iostreams1.40.0
libboost-math1.40-dev
libboost-math1.40.0
libboost-program-options1.40-dev
libboost-program-options1.40.0
libboost-python1.40-dev
libboost-python1.40.0
libboost-regex1.40-dev
libboost-regex1.40.0
libboost-serialization1.40-dev
libboost-serialization1.40.0
libboost-signals1.40-dev
libboost-signals1.40.0
libboost-system1.40-dev
libboost-system1.40.0
libboost-test1.40-dev
libboost-test1.40.0
libboost-thread1.40-dev
libboost-thread1.40.0
libboost-wave1.40-dev
libboost-wave1.40.0
libboost1.40-all-dev
libboost1.40-dev

blokant ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.