Не удалось загрузить libGL.so на Android

Я использую Ubuntu 12.04 (Точный Pangolin) с Oracle JDK 7, и когда я запускаю эмулятор Android из Eclipse, он дает эту ошибку:

[2012-07-04 02:52:10 - Emulator] error libGL.so: cannot open shared object file: No such file or directory 
[2012-07-04 02:52:10 - Emulator] Failed to load libGL.so

Также эмулятор очень медленный. Как я могу решить эту проблему?

Ответ 1

У меня Android SDK установлен в ~/android-sdk-linux_x86, поэтому я сделал:

ln -s /usr/lib/libGL.so.1 ~/android-sdk-linux_x86/tools/lib/libGL.so

Это разрешает ошибки, как и привязка к /usr/lib, но не требует root и не вмешивается в основные системные каталоги.

Ответ 2

В 64-разрядном Ubuntu 12.04 сделайте следующее:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Источник: Установка необходимых пакетов (Ubuntu 12.04)

Ответ 3

Для 32-разрядного Ubuntu 12.04 LTS это сработало:

sudo apt-get install libgl1-mesa-dev

Ничего из следующего не работало:

cd /usr/lib/i386-linux-gnu/mesa/
sudo ln -s libGL.so.1.2 libGL.so 
sudo ln -s libGL.so.1.2 /usr/lib/libGL.so
ln -s libGL.so.1.2 ~/android/android-sdk-linux/tools/lib/libGL.so

Ответ 4

Я использую Ubuntu 12.04 64-bit. Используя следующую команду для решения проблемы

 sudo ln -s /usr/lib32/fglrx/libGL.so.1.2 /usr/lib/libGL.so

Примечание. Это применимо только для тех, кто использует графические драйверы AMD/ATI.

Ответ 5

Что работает для меня (ubuntu 12.04 64bit) было просто запустить:

    sudo apt-get install libgl1-mesa-dev

Я обнаружил, что libGL.so существует в каталоге /usr/lib/x86_64-linux-gnu/

Установка 32-разрядной версии не работала.

Ответ 6

В 64-битном Ubuntu 12.04 нет /usr/lib 64. Это только /usr/lib. Кроме того, на моей машине libGL.so нет. Вместо этого файл libGLEW.so

Чтобы установить /usr/lib/LibGL.so, вы можете запускать: sudo apt-get install libgl1-mesa-dev

Однако, это не решило проблему для меня. Фактически, это, вероятно, испортило мою систему.

Ответ 7

Я думаю, что все правильно, никаких предупреждений и безрезультатности... Это может не работать с проприетарными драйверами.

Убедитесь, что установлен libgl1-mesa-glx: i386 (даже если вы получили файл x64 SO). Затем выполните:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

Ответ 8

Это сработало для меня на 64-битном Ubuntu 12.10 и пакете ADT:

ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 ~/adt-bundle-linux-x86_64/sdk/tools/lib/libGL.so

Если у вас нет /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1, просто установите libgl1-mesa-glx

sudo apt-get install libgl1-mesa-glx

Ответ 9

Я использую Linux Mint 14 - 64 бит, и для меня он работал:):

sudo apt-get install libgl1-mesa-glx libgl1-mesa-dev

Ответ 10

Ссылаясь на http://developer.android.com/sdk/installing/index.html, я установил ia32-libs и сделал:

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/i386-linux-gnu/mesa/libGL.so

Это все, что я сделал для решения этой проблемы.

Ответ 11

NVidia Optimus:

Выполняя двойную графику (intel и nvidia), я использовал следующее:

Это должно сделать трюк:

sudo add-apt-repository ppa:bumblebee/stable
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update 
sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic 
sudo apt-get install ia32-libs

Всякий раз, когда вы хотите запустить эмулятор, просто используйте optirun:

optirun emulator @<avd_name>

Я должен предупредить, что вчера я только установил Linux. Поэтому я не знаю, что я делаю...

Ответ 12

В Ubuntu 12.04 64-бит, GNOME 3.4, я сначала упомянул http://developer.android.com/sdk/installing/index.html и установлен ia32-lib, который будет генерировать /usr/lib/i 386-linux-gnu/mesa/libGL.so.1.2.0

Затем я запустил команду ниже и решил эту проблему:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

Это немного отличается от ответа на gridstation.

Я думаю, нет необходимости устанавливать драйвер Mesa локально, что может вызвать проблемы с вашими настоящими видеодрайверами.

Ответ 13

Чтобы заставить его работать с Ubuntu 12.10 (Quantal Quetzal) 64-бит, вам нужно сделать две вещи:

1) Вы должны инициализировать LD_LIBRARY_PATH

Пример:

export LD_LIBRARY_PATH=~/tests/android/adt-bundle-linux-x86_64/sdk/tools/lib

Комментарии: изменение пути к вашему местоположению

2) Вам нужно создать символическую ссылку

a) Используйте locate libGL, чтобы найти нужную библиотеку:

[email protected]:~$ locate libGL
/home/rudy/opt/android/android-sdk-linux/tools/lib/libGLES_CM_translator.so
/home/rudy/opt/android/android-sdk-linux/tools/lib/libGLES_V2_translator.so
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so.1.3.1
...
/usr/lib32/nvidia-current/libGL.so.304.43

b) Создайте мягкую ссылку

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

Комментарии: используйте 64-битную библиотеку в 64-разрядной операционной системе!

Теперь запустите эмулятор Моя система Optimus, и я установил Bumblebee. Я могу использовать "Intel Open Source Technology Center" "Mesa DRI Intel (R) Ironleake Mobile" "2.1 Mesa 9.0" или "NVIDIA Corporation" "GeForce GT 330M/PCIe/SSE2" "3.3.0 NVIDIA 304.43".

a) Intel

/home/rudy/tests/android/adt-bundle-linux-x86_64/sdk//tools/emulator64-arm -avd avd_42 -scale 0.46 -gpu on -verbose

b) Nvidia

optirun /home/rudy/tests/android/adt-bundle-linux-x86_64/sdk//tools/emulator64-arm -avd avd_42 -scale 0.46 -gpu on -verbose

Комментарии:

  • Я не видел никакой разницы между картами Intel и Nvidia... Это, конечно, потому, что эмулятор не является GPU интенсивным.
  • В моей системе Intel Core i5 потребовалось почти 1 минуту, чтобы запустить эмулятор... Пожалуйста, будьте терпеливы... Я нахожу эмулятор довольно быстрым после его загрузки (1 минута ожидания). Если вы запустите эмулятор из Eclipse IDE, то эмулятор выполняет эмуляцию программного обеспечения (GPU выключен) и занял 1 минуту 30, чтобы начать... Это намного медленнее, чем использование карт Intel или Nvidia!!!
  • verbose - это параметр, используемый для отображения дополнительной диагностики
  • optirun - это команда, использующая Nvidia на шмеле. Если у вас нет Bumblebee, не используйте его!
  • avd - это виртуальное устройство.
  • gpu on, чтобы использовать графическую карту

Ответ 14

На 64-битной версии Ubuntu

1. Проверьте libGL,

$ locate libGL.so
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

2. Создайте символическую ссылку, в которой установлен SDK

ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/local/android-studio/sdk/tools/lib/libGL.so

Ответ 15

OSError: libGL.so: невозможно открыть файл общих объектов: нет такого файла или каталога

Он может появиться в системах Linux, когда вы пытаетесь запустить VNL в первый раз. Чтобы решить эту проблему, создайте (как администратор) новую ссылку в /usr/lib:

sudo ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so

Если у вас 64-разрядный Linux, используйте /usr/lib64 instead.

Сначала проверьте, что на самом деле у вас libGL.so.1.2 в /usr/lib или /usr/lib64; он может быть назван libGL.so.1 или что-то еще вместо этого или расположен в другом каталоге, в зависимости от видеодрайверов.

Вы можете использовать locate libGL, чтобы найти правильный файл для ссылки.

Ответ 16

Подобно user1289608, я смог сделать сим ссылку из существующей установки Mesa:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

Ответ 17

У меня была такая же проблема. Но в моем случае я решил другое (я думаю, лучше).

В моей ситуации (Lubuntu 13.10) достаточно было просто установить библиотеку libgl1-mesa-dev через диспетчер Synaptic Package (библиотека libgl1-mesa-dri была уже установлена ​​по умолчанию при настройке дистрибутива Lubuntuu).

Это решает все проблемы с отправкой ссылок из одного файла в другой, а также предотвращает загрязнение вашей системы:

  • Как вы узнаете через несколько месяцев (или лет), какие выделенные ссылки вы поставили, чтобы система работала?
  • Как насчет будущих обновлений, если вы сами начнете делать эти вещи? Будет ли что-то нарушено/не обновлено из-за "ручного вмешательства"?

Если вы используете "системный механизм", все это делается для вас. И правильно сделано. Вот почему эти инструменты в первую очередь.

Лучшие rgds,

Ответ 18

Я использую Ubuntu 12.04 64-bit. Связывание /usr/lib64/libGLC.so.0 с /usr/lib64/libGL.so, похоже, решает проблему.

EDIT: Он останавливает сообщения об ошибках, но эмулятор все еще медленный для меня.

Ответ 19

Это сработало для меня:

Перезапустите adb из DDMS:
В Eclipse: Window > Open Perspective... > Other > DDMS. Выберите эмулятор в левой панели и выберите "Перезапустить adb"

Вы также можете перезапустить сервер adb из окна терминала.

android-sdk-linux/platform-tools/adb kill-server
android-sdk-linux/platform-tools/adb start-server

Ответ 20

У меня была та же проблема. Повторная установка драйвера Nvidia исправила segmentation fault для меня.

Ответ 21

Я нашел папку для libGL командой "locate"

Он оказался в /usr/lib/i 386-linux-gnu/

~ $найти libGL
/usr/lib/i386-linux-gnu/libGLEW.so.1.8
/usr/lib/i386-linux-gnu/libGLEW.so.1.8.0
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.8
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.8.0
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so.1.3.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0

Ответ 22

Для моей установки Debian 7 'Wheezy' я использовал следующую команду:

ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 opt/android/tools/lib/libGL.so

Ответ 23

sudo apt-get install libgl1-mesa-dev
cd ~/Development/adt-bundle-linux-x86_64-20140321/sdk/tools/lib
unlink libGL.so 
ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 libGL.so

что это!

Ответ 24

У меня была эта проблема, потому что при создании моего AVD я проверил "Использовать главный GPU". Я пробовал использовать эту опцию без проверки, и я смог успешно запустить эмулятор. Это приемлемо для моих целей тестирования, но если использовать GPU хоста важно, вы, вероятно, захотите попробовать некоторые из других решений здесь.

Ответ 25

Я решил эту проблему, переустановив libgl1, как 64-, так и 32-битные библиотеки:

$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-glx:i386

Предыстория: Раньше я переключался с бесплатного драйвера Radeon обратно на fglrx. Я предполагаю, что это как-то испортило мой libgl1, потому что fglrx поставляется со своей собственной версией.

Кроме того, я думаю, что другие предлагаемые здесь решения, возможно, опасны, потому что неправильно сопоставлять 32-битные разделяемые библиотеки в каталоге (64 бит)/lib/.

Ответ 26

Проверьте, установлены ли пакеты libgl1-mesa-*. Если это так, установите пакет libgl1-mesa-dev, чтобы получить непереведенные общие объекты.

Вам не нужно это делать - это ошибка команды Android. Дайте им перерыв, они только разработчики Java.