[Решение проблем] [ошибка: '/usr/lib/x86_64-linux-gnu/libGL.so'] [ссылка на библиотеку] [инструмент apt-file-используется для решения любых отсутствующих файлов lib в Linux]

0 Предисловие

  • Об этой проблеме сообщалось, когда я использовал pcl в двенадцатой лекции о плотной конструкции RGBD в slam14.
  • Конфигурация системы:ubuntu18.06

1 Описание проблемы

  • Сообщалось об ошибке при компиляции проекта error: '/usr/lib/x86_64-linux-gnu/libGL.so', и в итоге было определено, что в системе не хватаетlibGL.so
  • Это вызвано прерыванием связи с динамической библиотекой, давайте проверим состояние файла в соответствующем каталоге файлов.
cd /usr/lib/x86_64-linux-gnu/
  • Существует множество решений, основанных на наличии libGL.soэтого файла в этом каталоге, например, справочная статья 3.
  • И ситуация, с которой я столкнулся, заключается в том, что в этой папке нет файлов libGL.so, только libGL.so.1эти libGL.so.1.0.0два файла, аналогично статье 2.

2 решения

  1. Сначала убедитесь, что вы установили libGLбиблиотеку
sudo apt-get install build-essential libgl1-mesa-dev

sudo apt-get install freeglut3-dev

sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev

Хотя это может не решить проблему, даже если оно установлено

  1. Затем ищите по всему компьютеру libGL.so, если вы его найдете, с ним будет легко справиться, libGL.soскопируйте его в /usr/lib/x86_64-linux-gnu/путь, команда
sudo cp xxx/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so

Однако я не смог найти его здесь на своем компьютере целиком, поэтому я сделал libGL.so.1копию дляlibGL.so

sudo cp /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
  1. Тогда мы знаем, что это вызвано прерыванием ссылки динамической библиотеки, поэтому, если мы хотим связать, мы должны сначала определить, какая ссылка установлена ​​​​правильно.Проверить libGL.soметод ссылки библиотечного файла: (Это отрывок с другого компьютера .правильная ссылка)
wrx@wrx:/usr/lib/x86_64-linux-gnu$ ls -l libGL.so
lrwxrwxrwx 1 root root 14 510 20:17 libGL.so -> libGL.so.1.0.0
  1. Теперь у меня есть новый libGL.so, и я знаю, как правильно связать, ссылка ниже
sudo ln -s  /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 

Если появится сообщение о том, что символическая ссылка не может быть создана, а файл уже существует, удалите существующий файл с помощью sudo rm. Я просто удалил его после резервного копирования. Непосредственно удалять его небезопасно. Во-первых, sudo cp для его резервного копирования, потому что это
включает в себя
эти Файл символической ссылки должен использовать абсолютный путь, то есть, даже если вы находитесь в этом каталоге, не используйте ./libGL.so, а честно приведите /urs/lib/x86... ручная
ссылка

  • Ниже приведены некоторые другие соображения
  1. После завершения, с одной стороны, вы можете щелкнуть правой кнопкой мыши свойства файла, чтобы проверить, успешна ли ссылка, с одной стороны, вы можете проверить ls -n /usr/lib/x86_64-linux-gnu/libGL.soстатус его ссылки, а с другой стороны, вы можете просмотреть все файлы в каталоге. чтобы увидеть, есть ли красное имя.
  2. P - это S, лучше не использовать автоматическое связывание, sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.soопускание следующих параметров является автоматическим связыванием, потому что здесь происходит автоматическое связывание с другим файлом so, и после завершения связывания он все еще находится в красном имени + ссылка отключена государство, вот чужая ссылка
  3. Потом снова скомпилировать, но тут тоже есть сомнения, т.к. я удалил его напрямую libGL.so.1.0.0, а потом установил связь, но с помощью ls -nпроверки обнаружил, что три не связаны друг с другом, а связь между тремя есть.
  4. Затем я проверял ldd pointcloud_mapping статус ссылки библиотеки ссылок исполняемого файла и нашел:
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f127af3d000)

Последняя ссылка еще libGL.so.1, эммм, сбивает с толку, но проблема хотя бы в том, что эта проблема решена

3 дополнения

3.1 Установление и просмотр библиотечной ссылки

3.1.1 Установление библиотечной связи

sudo ln -s  /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 

3.1.2 Просмотр ссылки на библиотеку

Проверьте его статус ссылки

ls -n /usr/lib/x86_64-linux-gnu/libGL.so

3.2 Инструмент apt-файл, представление можно использовать для решения любых отсутствующих файлов lib под linux

3.2.1 Инструментальная установка apt-файла

sudo apt-get install apt-file
sudo apt-file update

Таким образом, инструмент устанавливается

3.2.2 Пример использования

Если вы хотите найти lib, например libGL.so в этой статье, введите:

sudo apt-file search libGL.so

возвращаться:

libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1
libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
libglvnd-dev: /usr/lib/x86_64-linux-gnu/libGL.so
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.1
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.340.106
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.340.108
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.1
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.340.106
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.340.108
primus-libs: /usr/lib/x86_64-linux-gnu/primus/libGL.so.1
virtualbox-guest-x11: /usr/lib/virtualbox/additions/libGL.so
virtualbox-guest-x11: /usr/lib/virtualbox/additions/libGL.so.1
virtualbox-guest-x11-hwe: /usr/lib/virtualbox/additions/libGL.so
virtualbox-guest-x11-hwe: /usr/lib/virtualbox/additions/libGL.so.1

Вы можете посмотреть, какого пакета вам может не хватать, а затем установить его. Например, я подозревал, что не установлен libglvnd-dev. После его установки я обнаружил, что вышеуказанная проблема все еще существует. значит файл существует Не будь как безголовая курица.

4 справочные статьи

  1. Нет правила для создания цели '/usr/lib/x86_64-linux-gnu/lib… .so
  2. ubuntu16.04 catkin_make报错Нет правила для создания цели '/usr/lib/x86_64-linux-gnu/libGL.so'
  3. make: *** Нет правил для создания цели 'XXX', необходимой для '/usr/lib/x86_64-linux-gnu/libGL.so'. останавливаться

おすすめ

転載: blog.csdn.net/qq_45954434/article/details/126185601