Ошибка компоновщика: статическое связывание библиотеки ускоренной сериализации

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

g ++ serialize.cpp -L "/usr/local/lib/libboost_serialization.a"

Ошибка :

/tmp/ccw7eX4A.o: В функции boost::archive::text_oarchive::text_oarchive(std::basic_ostream<char, std::char_traits<char> >&, unsigned int)': serializep.cpp:(.text._ZN5boost7archive13text_oarchiveC2ERSoj[_ZN5boost7archive13text_oarchiveC5ERSoj]+0x25): undefined reference toboost :: archive :: text_oarchive_impl :: text_oarchive_impl (std :: basic_ostream> &, unsigned int) '.......... collect2: ld вернул 1 статус выхода

Но когда я подключаюсь как общая библиотека, g ++ serialize.cpp -lboost_serialization, он работает нормально.

Что мне здесь не хватает

P.S: Другие сообщения StackOverflow с тем же вопросом не имеют ответов, которые работают для указанной выше ошибки.


person Manikandaraj Srinivasan    schedule 28.09.2012    source источник
comment
Статическая связь выполняется с использованием ключевого слова -static. Кроме того, -l * и -Llib * .a - это одно и то же.   -  person flamingo    schedule 28.09.2012


Ответы (2)


g ++ serialize.cpp -L "/usr/local/lib/libboost_serialization.a"

Эта командная строка полностью неверна: флаг -L сообщает компоновщику, где искать библиотеки; он не указывает компоновщику использовать предоставленную вами библиотеку. Попробуйте вместо этого:

g++ serialize.cpp /usr/local/lib/libboost_serialization.a
person Employed Russian    schedule 29.09.2012

Поскольку я не могу воспроизвести вашу проблему, лучшее, что я могу сделать, - это рассказать вам, как я обычно компилирую с boost_serialization статически:

 g++ myapp.cpp -o myapp -Wall -static -static-libgcc -I/usr/local/include -L/usr/local/lib -lboost_serialization -lpthread
person Hugo Corrá    schedule 28.09.2012