【Решить проблему】【ошибка: '/usr/lib/x86_64-linux-gnu/libGL.so'】
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 решения
- Сначала убедитесь, что вы установили
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
Хотя это может не решить проблему, даже если оно установлено
- Затем ищите по всему компьютеру
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
- Тогда мы знаем, что это вызвано прерыванием ссылки динамической библиотеки, поэтому, если мы хотим связать, мы должны сначала определить, какая ссылка установлена правильно.Проверить
libGL.so
метод ссылки библиотечного файла: (Это отрывок с другого компьютера .правильная ссылка)
wrx@wrx:/usr/lib/x86_64-linux-gnu$ ls -l libGL.so
lrwxrwxrwx 1 root root 14 5月 10 20:17 libGL.so -> libGL.so.1.0.0
- Теперь у меня есть новый
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... ручная
ссылка
- Ниже приведены некоторые другие соображения
- После завершения, с одной стороны, вы можете щелкнуть правой кнопкой мыши свойства файла, чтобы проверить, успешна ли ссылка, с одной стороны, вы можете проверить
ls -n /usr/lib/x86_64-linux-gnu/libGL.so
статус его ссылки, а с другой стороны, вы можете просмотреть все файлы в каталоге. чтобы увидеть, есть ли красное имя. - P - это S, лучше не использовать автоматическое связывание,
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so
опускание следующих параметров является автоматическим связыванием, потому что здесь происходит автоматическое связывание с другим файлом so, и после завершения связывания он все еще находится в красном имени + ссылка отключена государство, вот чужая ссылка - Потом снова скомпилировать, но тут тоже есть сомнения, т.к. я удалил его напрямую
libGL.so.1.0.0
, а потом установил связь, но с помощьюls -n
проверки обнаружил, что три не связаны друг с другом, а связь между тремя есть. - Затем я проверял
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. После его установки я обнаружил, что вышеуказанная проблема все еще существует. значит файл существует Не будь как безголовая курица.