G ++ не может найти библиотеки повышения. Я говорю, что они на виду - PullRequest
5 голосов
/ 19 января 2012

Я пытаюсь создать некоторый код. Вот ошибка, которую я получаю:

main.o: In function `__static_initialization_and_destruction_0':
/home/jmbeck/Downloads/boost_1_48_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'

Есть еще, но я не думаю, что это актуально.

Вот команда построения:

g++ -I/home/jmbeck/Downloads/boost_1_48_0 
    -L/home/jmbeck/Downloads/boost_1_48_0/stage/lib 
    -lm 
    -lboost_system 
    -lboost_thread
    -lboost_regex 
    main.cpp

Каталог / home / jmbeck / Downloads / boost_1_48_0 / stage / lib содержит ожидаемые файлы:

libboost_system.a
libboost_system.so@
libboost_system.so.1.48.0*
libboost_thread.a
libboost_thread.so@
libboost_thread.so.1.48.0* 
libboost_regex.a
libboost_regex.so@
libboost_regex.so.1.48.0*
... etc...

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

Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 19 января 2012

Попробуйте поставить библиотеки после main.cpp.

В прошлом я испытывал некоторые странности, когда GCC игнорирует библиотеки, потому что он не думает, что они используются, до того, как добраться до моих исходных файлов.

1 голос
/ 20 января 2012

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

...