Идентификация, какая системная библиотека Linux содержит функцию

Я использую dev систему, где я должен указать название lib при доступе к функции в ней.

Я использовал функции как открытый () прежде и так или иначе узнал, что они находятся в libc.so.

Теперь я хочу использовать lstat (), но кажется, что этот не находится в libc. К сожалению, страницы справочника, на которые я смотрел, не документируют местоположение функций.

Так, два вопроса:

  1. Кто-то может сказать, какой lib размещает lstat?
  2. Как я могу обычно узнавать это? Кроме использования grep "называют" на всех файлах в папке lib, я имею в виду.
10
задан svick 10 July 2016 в 12:43
поделиться

4 ответа

Создайте простой тестовый сценарий на C, скомпилируйте его и запустите на нем 'ldd -r', чтобы проверить, какие библиотеки загружены. Если у вас нет lstat () в C, значит, у вас проблема с вашим dev env. Или этот env восходит к эпохе символических ссылок: -)

5
ответ дан 4 December 2019 в 03:38
поделиться

Это один из способов сделать это:

tomislav@malik:~$ cd /usr/lib
tomislav@malik:/usr/lib$ grep "lstat()" *
Binary file libperl.so.5.10 matches
Binary file libperl.so.5.10.0 matches
tomislav@malik:/usr/lib$ 
3
ответ дан 4 December 2019 в 03:38
поделиться

Из справочной страницы (man lstat):

LSTAT(P)

NAME
       lstat - get symbolic link status

SYNOPSIS
       #include <sys/stat.h>

       int lstat(const char *restrict path, struct stat *restrict buf);
-2
ответ дан 4 December 2019 в 03:38
поделиться

lstat находится в libc, а libc скомпонован по умолчанию. Вам не нужно ничего делать для использования lstat, кроме включения заголовочного файла для него #include

на страницах руководства обычно указывается, в какой библиотеке они находятся.

-2
ответ дан 4 December 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: