Ошибка компоновщика: статическая компоновка библиотеки повышения сериализации
Я пытаюсь связать библиотеку Boost Serialization с моим кодом. Но это не похоже на работу.
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 to
boost::archive::text_oarchive_impl::text_oarchive_impl(std::basic_ostream >&, unsigned int)'
..........
collect2: ld вернул 1 статус выхода
Но когда я делаю ссылку на общую библиотеку g++ serialize.cpp -lboost_serialization, она работает нормально.
Что мне здесь не хватает
PS: другие сообщения Stackru с тем же вопросом не имеют ответов, которые работают на вышеуказанную ошибку
2 ответа
g++ serialize.cpp -L"/usr/local/lib/libboost_serialization.a"
Эта командная строка совершенно неверна: -L
флаг сообщает компоновщику, где искать библиотеки; он не говорит компоновщику использовать библиотеку, которую вы предоставляете. Попробуйте это вместо этого:
g++ serialize.cpp /usr/local/lib/libboost_serialization.a
Поскольку я не могу воспроизвести вашу проблему, лучшее, что я могу сделать, это рассказать вам, как я обычно компилирую против boost_serialization статически:
g++ myapp.cpp -o myapp -Wall -static -static-libgcc -I/usr/local/include -L/usr/local/lib -lboost_serialization -lpthread