воскресенье, 12 февраля 2012 г.

cannot find -lEGL

Обновления в генте - вещь всегда весёлая и приводящая к ошибкам, от которых у дебианщиков глаза по пять рублей делаются.


После очередного обновления у меня в очередной раз отвалилось gtk. Почти полностью, т.к. оно не стартовало. В последний раз это решилось пересборкой nvidia-drivers. Сейчас не помогло. Пересборка непосредственно gtk+ выдала следующий результат:

-2.24.10/work/gtk+-2.24.10/gdk/tmp-introspect4zvm_P/Gdk-2.0.o
libtool: link: gcc -o /var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk/tmp-introspect4zvm_P/.libs/Gdk-2.0 -DGDK_PIXBUF_DISABLE_DEPRECATED -O2 -march=native -mtune=native -pipe -Wall -pthread /var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk/tmp-introspect4zvm_P/Gdk-2.0.o -Wl,--export-dynamic  -L. ./.libs/libgdk-x11-2.0.so -lpangocairo-1.0 -lpango-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lXfixes -lgdk_pixbuf-2.0 -lcairo -lX11 -lm -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../i686-pc-linux-gnu/bin/ld: warning: libEGL.so.1, needed by /usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglGetConfigs'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglMakeCurrent'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglQueryString'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglSwapBuffers'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglCreatePbufferSurface'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libcairo.so: undefined reference to `eglDestroySurface'
collect2: ld returned 1 exit status
linking of temporary binary failed: Command '['/bin/sh', '../libtool', '--mode=link', '--tag=CC', 'gcc', '-o', '/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk/tmp-introspect4zvm_P/Gdk-2.0', '-export-dynamic', '-DGDK_PIXBUF_DISABLE_DEPRECATED', '-O2', '-march=native', '-mtune=native', '-pipe', '-Wall', '-L.', 'libgdk-x11-2.0.la', '-pthread', '-lgio-2.0', '-lgobject-2.0', '-lgmodule-2.0', '-lgthread-2.0', '-lrt', '-lglib-2.0', '/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk/tmp-introspect4zvm_P/Gdk-2.0.o']' returned non-zero exit status 1
make[4]: *** [Gdk-2.0.gir] Ошибка 1
make[4]: Выход из каталога `/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Выход из каталога `/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10/gdk'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/var/tmp/portage/x11-libs/gtk+-2.24.10/work/gtk+-2.24.10'
make: *** [all] Ошибка 2


Ну, т.к. сначала я прочёл сообщение не очень внимательно, то подумал, что проблема в cairo. Пересобираю, выводит следующее:

  CC     cairo-tee-surface.lo
  CCLD   libcairo.la
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lEGL
collect2: ld returned 1 exit status


Тут уже становится яснее. Выяснилось, что -lEGL - это ключик для линковки библиотеки libEGL.so. Тока, вот кто за неё отвечает?

# qfile /usr/lib/opengl/xorg-x11/lib/libEGL.so
media-libs/mesa (/usr/lib/opengl/xorg-x11/lib/libEGL.so)


Ну ладно, пересоберу mesa и всё станет хорошо. Пересобрал. Пересобираю cairo. Ага, щаз оно хорошо станет: таже ошибка >_<. Самое время для чёрной магии:

# eselect opengl set xorg-x11
# eselect opengl set nvidia


После этого всё без вопросов собралось и заработало. Так то!

1 комментарий:

  1. Действительно, "черная магия". Но мне помогло, спасибо.

    ОтветитьУдалить