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

Я пытаюсь связать библиотеку 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 toboost::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
Другие вопросы по тегам