Как узнать, когда использовать .a или .so при ссылке на Boost? - PullRequest
1 голос
/ 13 октября 2009

Я хотел попробовать библиотеку Boost :: Serialization для проекта, над которым я работаю. Я также пытаюсь привыкнуть к программированию в Linux. Я установил повышение в его местах по умолчанию. Я попытался скомпилировать тестовый файл, который они предоставляют здесь с аргументами командной строки, которые они предоставляют, и он работал нормально. В этом примере они используют файл .a.

Затем я перешел на страницу сериализации и попытался запустить один из демоверсий сериализации . Я в основном выполнял те же команды, за исключением того, что я поменял имена файлов и связался с libboost_serialization.a вместо libboost_regex.a, но я получил кучу ошибок. После игры с различными опциями и двойной проверки каталогов я, наконец, начал работать, заменив .a файлом .so.

Просто для справки, что, наконец, сработало для меня, это:

g++ /usr/local/lib/libboost_serialization.so sertest.cpp -o sertest 

Почему один пример связан с файлом .a, а с другим - с .so?

1 Ответ

4 голосов
/ 15 октября 2009

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

...