OpenGL и nvidia-drivers
Pokemoshka 4 марта, 2007 - 13:46
Поставил nvidia-drivers-1.0-9746.
Сделал opengl-update nvidia.
После этого перестали собираться приложения с флагом "opengl", например amarok, kdelibs. При компиляции вываливается ошибка:
Цитата:
/usr/lib/libGL.so: undefined reference to `_nv001399gl'
/usr/lib/libGL.so: undefined reference to `_nv001389gl'
/usr/lib/libGL.so: undefined reference to `_nv001278gl'
/usr/lib/libGL.so: undefined reference to `_nv001415gl'
/usr/lib/libGL.so: undefined reference to `_nv001450gl'
/usr/lib/libGL.so: undefined reference to `_nv001441gl'
/usr/lib/libGL.so: undefined reference to `_nv001262gl'
/usr/lib/libGL.so: undefined reference to `_nv001421gl'
/usr/lib/libGL.so: undefined reference to `_nv001363gl'
/usr/lib/libGL.so: undefined reference to `_nv001310gl'
...
...
Список не полный но там все одно и то же.
Порывшись в инете нашел такое: мол до компиляции сделайте
opengl-update xorg-x11
а после обратно
opengl-update nvidia
что по сути означает переключение ссылки между иксовай и нвидиавской libGL.so. То есть приложения будут собраны с иксовой опенгл.
Вопрос: можно ли заставить их компидиться с нвидиавской библиотекой? А если нет - то за каким она вообще нужна?
»
- Для комментирования войдите или зарегистрируйтесь
может это: eselect
может это:
eselect opengl set nvidia
без разницы
opengl-update nvidia это и есть eselect opengl set nvidia.
Просто opengl-update - утилитка для упрощенной работы.
уж сколь раз
уж сколь раз твердили миру...
opengl-update ЮЗАТЬ НЕЛЬЗЯ!!!
спокойно
Не кричи. Если быть точным, то изначально opengl-update я и не юзал. После установки дров выполнил именно eselect opengl set nvidia. А про opengl-update узнал уже в процессе поиска ответа на свой вопрос. Так что он тут не причем.
З.Ы.: уж сколько раз твердили - чем выкрикивать "прописные истины" неплохо бы давать оргументированный ответ. Если он тебе известен конечно.
это очень
это очень старая история - и если посмотреть доки на gentoo.org/doc/ru/(а ты тут был?) то в любой статье будет сказано что нельзя. она раньше была, но теперь все тузлы такого рода переходят на eselect. осталось вроде только ява и гцц, а олпенгл, ведро, профиль, словари, и ещё куча всего рулиться ей.
был
Был. Но про opengl-update как-то не попадалось...
Вопщем завязываем с оффтопом. Хотелось бы услышать по теме.
OpenGL и nvidia-drivers
Столкнулся с такой-же проблемой. Недолго думая, переустановил драйвер "в обход" portage, используя инсталлятор nvidia. Такой вот себе workaround...
Re: OpenGL и nvidia-drivers
И помогло?
Просто я раньше ставил дрова nvidia именно так и все было ок. А тут первый раз поставил из nvidia-drivers и вот такая ботва...
Было у меня до
Было у меня до недавнего времени такое. Вобщем я выснил что к чему, прото opengl либы от новых драйверов nvidia ставятся не в /usr/lib а в другую папку (ща не помню куда, вечером могу посмотреть). В общем фишка в том, что файл /usr/lib/libGL.so идет от старых драйверов nvidia поэтому не работает нормально, надо его заменить файлом от новый драйверов или симлинк сделать.
этим собсно и
этим собсно и занимается eselect opengl
это ниче не меняет
/usr/lib/libGL.so - это и есть симлинк. А либы ставятся в /usr/lib/opengl/ - а там уже подкаталоги для xorg'говских и nvidia'вских. А eselect просто "переключает" ссылку между либами из этих каталогов.
Проверь
Проверь внимательно куда ведет этот симлинк. У меня он вел прямиком на соответствующую (старую) библиотеку прямо в /usr/lib а не в /usr/lib/opengl/ из-за этого и были траблы.
покажи
покажи результат
grep opengl /etc/ld.so.conf
set | grep OPENGL_PROFILE
ls -l /usr/lib/libGL*.so
ls -l /usr/include/GL/gl*.h
grokinn написал(а):Проверь
Подтверждаю, было такое!
решилось
Проблемма решилась.
Вопщем сделал следующее:
1) Как уже говорил - раньше ставил дрова непосредственно ихним инсталером, а не из портежей. Соответственно после установки из nvidia-drivers остались файлы от старых дров, а именно:
а) библиотека libGL.so в /usr/lib. То есть конечно libGL.so - симлинк, а сами либы назывались в соответствии с понятиями libGL.so.xxxx. Удалил нафик. Стоит заметить что сами эти либы причиной быть не могли так как после установки nvidia-drivers и eselect opengl set nvidia/xorg-x11 линк libGL.so указывал куда надо (проверено) - то есть на либы из /usr/lib/opengl.
б) модуль ядра nvidia.ko. Вот тут возможно и была проблемма. То есть в /lib/modules обретались сразу два модуля просто по разным каталогам. Но тут тоже не все так просто. Перед установкой nvidia-drivers я пересобрал ядро, потому как я недавно перешел на новую версию gcc и модуль собранный из nvidia-drivers (новым компилятором) решительно отвергался ядром (собранным еще старым компилятором) как несоответствующий формату (как выяснилось модули должны собираться строго той же версией компилятора что и ядро). То есть в итоге - ядро собранное gcc4.1, новый nvidia.ko собранный gcc4.1 и старый nvidia.ko собранный gcc3.4. Таким образом версия о том, что грузился старый модуль отпадает ввиду ее невозможности.
Но старый модуль все равно удалил нафик.
2) Снес nvidia-drivers.
3) Поставил новое ядро.
4) Поставил nvidia-drivers.
5) eselect opengl set nvidia.
И все заработало на ура.
подниму тему...
проделал все описанные манипуляции но всё такиеже ошибки.
Может проблема в том, что система x64 или что ядро genkernel'ом пересобирал? кто-нибудь знает куда копать?
PS USE-флаги:
goblin alexander # emerge -pv amarok
[ebuild R ] media-sound/amarok-1.4.10_p20090130-r2 USE="amazon ipod kde mp4 musicbrainz opengl -daap -debug -ifp -mtp -mysql -njb -postgres -python (-real) -visualization -xinerama" LINGUAS="ru -/../" 0 kB
право слово, что за бред :(
право слово, что за бред :( какой родной инсталлер! portage only - и только так! а коли так случилось, очистить все и ставить из portage ... инсталлер между прочим и функцию удаления имеет :)
скрытный секс :)