libpthreads.so отсутствует в Ubuntu 21.10 (amd64)

Вопрос или проблема

Я пытался найти 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 как отдельной сущности. Средства разработки и современные компиляторы справляются с этим автоматически.

Оцените материал
Добавить комментарий

Капча загружается...