/ usr / bin / ld: не удается найти -lboost_system-mt - PullRequest
15 голосов
/ 04 января 2011

Я недавно обновил буст с 1,40 до 1,45, полностью удалив предыдущий каталог буста, загрузив исходники 1,45 и перестроив нужные библиотеки. Затем я установил библиотеки с помощью bjam install.

На моем компьютере больше ничего не изменилось, но теперь, когда я собираю свою программу на C ++, я получаю следующую ссылку:

/usr/bin/ld: cannot find -lboost_system-mt

Я искал, и файл действительно не существует. Кажется, что библиотеки mt больше не являются частью библиотеки - или я что-то упустил?

Как мне решить эту проблему?

Ответы [ 7 ]

18 голосов
/ 02 мая 2012

Ну, я решил эту ошибку в Ubuntu 12.04 (x86_64) с помощью старого доброго подхода scattergun

При установке openvrml с ошибкой "невозможно найти -lboost_filesystem-mt" после make.

libboost-все-DEV.устанавливает 54 разных пакета.Один из них, должно быть, сделал трюк, работает отлично.

6 голосов
/ 04 января 2011

Эта версия, вероятно, не поддерживает многопоточность по умолчанию.

Попробуйте передать -lboost_system вместо -lboost_system-mt

Редактировать:

Также хорошо проверить, действительно ли новые библиотеки находятся внутри /usr/local/lib.Вам следует поискать / usr / local / lib / libboost_system.so , поскольку вы не запрашивали сборки библиотек с многопоточностью.Если файл существует, то в вашем $ PATH (переменная среды) может отсутствовать /usr/local/lib, и вам следует обновить команду компиляции, чтобы компилятор знал, где их найти:

-L/usr/local/lib -lboost_system-mt

4 голосов
/ 16 июля 2016

У меня тоже была странная встреча с этим.Мое решение было странным, но с тех пор оно мне помогло, и я нигде об этом не читал, вот оно.В моем случае lboost_python3 отсутствовал.

Следовательно, я загрузил все 54 пакета, например, @Kilgore Trout предложил

sudo apt-get install libboost-all-dev

К сожалению, когда я смотрел в папку / usr / lib - только определенные пакетыбыли доступны там.Однако при поиске в папке / usr / lib я получил больше результатов - все отсутствующие файлы были в /usr/lib/arm-linux-gnueabihf-folder.

Я просто скопировал и вставил весь libboostсвязанные файлы в / usr / lib-folder et voila - в следующий раз, когда я пытался что-то собрать с помощью lboost_python3.so, все работало.

Кажется, что некоторые пути перепутаны или что-то вроде этого.Надеюсь, это поможет вам или кому-то еще.

1 голос
/ 03 ноября 2015

измените libboost_thread-mt на libboost_thread, сначала найдите адрес libboost_thread.so и libboost_thread.a, затем сделайте программные ссылки на эти файлы по тому же адресу, так что это должно быть

ln -s /...libboostSourceFiles.../libboost_thread.so /..RequestTOmtFiles.../libboost_thread-mt.so

, это работает для другихФайлы libboost -mt, такие как сериализация, iostreams, программные опции

1 голос
/ 17 сентября 2014

Исправлено благодаря @ KilgoreTrout и @ user3191035 , поэтому вот мои заметки: я на Ubuntu Natty 11.04;мое обычное состояние было:

$ dpkg -S libboost_filesystem
libboost-filesystem1.42.0: /usr/lib/libboost_filesystem.so.1.42.0

Затем я установил:

sudo apt-get install libboost-all-dev # ton of packages

... и после этого я получаю это:

$ dpkg -S libboost_filesystem
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem-mt.a
libboost-filesystem1.42.0: /usr/lib/libboost_filesystem.so.1.42.0
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem.so
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem-mt.so
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem.a

Итак, чтогде libboost_filesystem-mt.so находится в этой ОС ...

1 голос
/ 13 января 2014

У меня дерзость:

$ dpkg -S /usr/lib/libboost_system-mt.so
libboost-system1.49-dev: /usr/lib/libboost_system-mt.so

Таким образом, вы можете сделать:

sudo apt-get install libboost-system1.49-dev
1 голос
/ 04 января 2011

Вы уверены, что символическая ссылка /usr/lib/libboost_system-mt.so указывает на нужный файл:

$ realpath /usr/lib/libboost_system-mt.so

В противном случае вам нужно установить проект или использовать ваше управление дистрибутивом. Для Debian / Ubuntu это будет apt-get install libboost-system1.45-dev - но этот пакет не существует при написании этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...