Нужен ли libpthread, если API pthread находится в libc

Глядя на вывод readelf -s /lib/x86_64-linux-gnu/libc.so.6 на моем компьютере с Ubuntu 22.04, я вижу (что выглядит так) весь API-интерфейс pthread, содержащийся в разделе .text.

В качестве проверки работоспособности я успешно скомпилировал и запустил

#include <stdio.h>
#include <string.h>

#include <pthread.h>

static void *
func(void *args) {
    return args;
}

int main() {
    int ret;
    pthread_t thread;

    ret = pthread_create(&thread, NULL, func, NULL);
    if ( ret != 0 ) {
        fprintf(stderr, "pthread_create: %s\n", strerror(ret));
        return ret;
    }
    pthread_join(thread, NULL);

    return 0;
}

без использования -pthread.

Учитывая все это, есть ли какая-либо цель для libpthread на моем компьютере, кроме поддержки старых приложений, которые ожидают, что она будет там?

🤔 А знаете ли вы, что...
C позволяет определять и использовать макросы для автоматизации задачи исходного кода.


63
1

Ответ:

Решено

Нужен ли libpthread, если API pthread находится в libc

Нет.

Есть ли какая-либо цель для libpthread на моем компьютере, кроме поддержки старых приложений, которые ожидают, что она будет там?

Нет.

См. https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread. С тех пор libpthread — это пустая библиотека.