3

Я locate gmp.h в командной строке и получаю следующее:

/usr/src/linux-headers-3.13.0-24/include/linux/igmp.h
/usr/src/linux-headers-3.13.0-24/include/uapi/linux/igmp.h
/usr/src/linux-headers-3.13.0-24-generic/include/linux/igmp.h

Но когда я делаю ls /usr/include/x86-64-linux-gnu/ я вижу это:

a.out.h  asm  bits  c++  fpu_control.h  gmp.h  gnu  ieee754.h  sys

Почему не locate /usr/include/x86-64-linux-gnu/gmp.h?

edit: ls -l /usr/include/x64-64-linux-gnu/gmp.h говорит это:

ls: cannot access /usr/include/x64-64-linux-gnu/gmp.h: No such file or diretory

Почему ls /usr/include/x86-64-linux-gnu/ говорит, что он существует, когда ls -l /usr/include/x64-64-linux-gnu/gmp.h говорит, что нет?

Скриншот:

1 ответ1

4

locate не находит файлы в файловой системе. Вместо этого он ищет в базе данных, которая содержит все файлы.

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

Вы можете обновить его вручную с помощью команды updatedb (или, если вы не вошли в систему с достаточными учетными данными: sudo updatedb). Для получения дополнительной информации см. man updatedb .


Основываясь на вашем посте, который включал /usr /src /linux-headers-3, я предположил, что вы запускаете его в дистрибутиве linux. В других операционных системах команда locate может работать немного иначе. Например, во FreeBSD команда для ручного обновления базы данных locate должна запустить /usr/libexec/locate.updatedb которая еженедельно обновляется из /etc/periodic/weekly/310.locate .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .