Вопрос или проблема
Я пытался найти libpthread.so
, но он выдал мне только:
/lib/x86_64-linux-gnu/libpthread.so.0
Я затем установил его с помощью:
sudo apt-get install libpthread-stubs0-dev
Но всё равно, нет libpthread.so
. Пожалуйста, может кто-нибудь помочь?
Только что столкнулся с той же проблемой. Быстрый обходной путь – создать символическую ссылку:
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread.so.0 /usr/lib/x86_64-linux-gnu/libpthread.so
Сейчас уже довольно поздно, но сегодня у меня такая же проблема. Я пытался связать свой исполняемый файл с pthread, используя g++ 11.4 в Ubuntu 22.04, и он говорит, что не может найти /usr/lib/x86_64-linux-gnu/libpthread.so. Затем я понял, что все функции pthread включены в libc.so, так что вам больше не нужно явно связываться с -lpthread.
Вы можете проверить это, используя grep для поиска функций pthread в вашем файле libc.so.6.
nm -D /usr/lib/x86_64-linux-gnu/libc.so.6 | grep pthread_create
0000000000094c40 T pthread_create@GLIBC_2.2.5
0000000000094c40 T pthread_create@@GLIBC_2.34
Ответ или решение
Проблема с отсутствием libpthread.so
в Ubuntu 21.10 (amd64) может возникнуть из-за различных причин, однако важно понимать, что на современных системах, использующих glibc, библиотека потоков (pthreads) включена в саму библиотеку libc.so
.
1. Проверка наличия библиотек
Используйте команду, чтобы проверить наличие libpthread.so
:
ls /lib/x86_64-linux-gnu/libpthread.so*
Вы должны получить вывод, содержащий libpthread.so.0
. Эта библиотека является символической ссылкой на libc.so
.
2. Установка необходимых пакетов
Убедитесь, что у вас установлены необходимые пакеты. Для работы с pthread вам не нужно отдельно устанавливать libpthread
, так как она входит в состав libc
. Однако, если вы работаете с разработкой, убедитесь, что у вас установлены следующие пакеты:
sudo apt-get install build-essential
3. Создание символической ссылки
Если вам действительно необходимо создать символическую ссылку на libpthread.so
, вы можете сделать это следующим образом:
sudo ln -s /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so
Но обращаем ваше внимание, что на большинстве современных систем это не потребуется, так как компиляторы, такие как gcc
и g++
, автоматически подсоединяют необходимые библиотеки.
4. Компиляция без явного указания -lpthread
Как вы заметили, начиная с версии glibc 2.34, функции pthread включены в libc.so
. Это означает, что вы можете компилировать свои программы без явного указания -lpthread
. Например:
g++ -o ваш_исполняемый_файл ваш_код.cpp
Проверить наличие функций pthread в вашей libc
можно с помощью следующей команды:
nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep pthread_create
Если вы видите выходные данные с функциями pthread, это подтверждает, что они доступны.
5. Заключение
В целом, если ваша программа не находит libpthread.so
, проверьте правильность компиляции и наличие нужных библиотек. Не забудьте, что функции pthread уже встроены в libc
, и вам, возможно, не нужно беспокоиться о наличии libpthread.so
как отдельной сущности. Средства разработки и современные компиляторы справляются с этим автоматически.