2013-07-09 3 views
5

Я недавно установил Fedora 19 x86_64 на свой компьютер. Я написал простую программу OpenGL, но не смог ее скомпилировать.пропуская несовместимый libGL.so

gcc -o quad quad.c -lX11 -lGL -lGLU 
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.1/../..  /../libGL.so when searching for -lGL 
    /usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL 
    /usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL 
    /usr/bin/ld: cannot find -lGL 
    collect2: error: ld returned 1 exit status 

У меня есть MesaGL и другие библиотеки на месте (т. Е./Usr/lib), тогда что не так?

+0

Установили ли вы какие-либо дополнительные GL-библиотеки, возможно, через установку графического драйвера ATI или NVIDIA? – JonnyRo

+0

Да, я установил ATI Catalyst Drivers v 13.6 beta. –

+0

Темная сторона установщиков NVIDIA и ATI заключается в том, что они ЗАМЕНИТЬ GL-библиотеки. – JonnyRo

ответ

1

Проблема устранена.

я удалил ATI Catalyst Driver v13.6 бета выполнения "aticonfig --uninstall" ПЕРЕЗАГРУЗКА компилировать программу с теми же командами, и это был успех :)

Теперь я переустановить ATI Catalyst Драйверы v13.6 beta REBOOT и скомпилируйте программу снова, Он строит УСПЕШНО !!

Не знаю, что было неправильно, но я OpenGL работает сейчас :)

+1

Да. – JonnyRo

+0

Спасибо. Удаление и переустановка драйвера ATI действительно работали для меня. – edwardtoday

1

Есть предупреждения о несовместимых версиях libGL, а также о несовместимых библиотеках GCC. Я думаю, у вас может быть 32-разрядная версия gcc, установленная на 64-битной ОС. Попробуйте

file -L `which gcc` 

чтобы проверить это.

+0

/usr/lib64/ccache/gcc –

+0

Это результат команды «which», но не весь указанный мной конвейер, который должен сказать что-то более похожее на «64-разрядный исполняемый файл ELF» –

+0

my bad,/usr/lib64/ccache/gcc: символическая ссылка на '../../bin/ccache ' –

-2

Установите freeglut-Devel: # Sudo ням установить freeglut-Devel

5

Для меня, что-то было не так с библиотека символьные ссылки:

$ locate libGL.so | egrep ^/usr | xargs file 
/usr/lib/libGL.so:      symbolic link to `/usr/lib/libGL.so.1' 
/usr/lib/libGL.so.1:     symbolic link to `/usr/lib/libGL.so.1.2' 
/usr/lib/libGL.so.1.2:     symbolic link to `/usr/lib/fglrx/fglrx-libGL.so.1.2' 
/usr/lib/fglrx/fglrx-libGL.so.1.2:  ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 
/usr/lib64/FGL.renamed.libGL.so.1.2.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=46121ec8b16424a8b65a0cf11c3f9730ae0e49f5, stripped 
/usr/lib64/libGL.so:     broken symbolic link to `libGL.so.1.2.0' 
/usr/lib64/libGL.so.1:     symbolic link to `/usr/lib64/libGL.so.1.2' 
/usr/lib64/libGL.so.1.2:    symbolic link to `/usr/lib64/fglrx/fglrx-libGL.so.1.2' 
/usr/lib64/fglrx/fglrx-libGL.so.1.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped 

Так /usr/lib/libGL.so указал на 32-битном Lib и /usr/lib/libGL.so была нарушена связь. Я исправил версию/usr/lib64, чтобы правильно указать в libGL.so.1 (и версию/usr/lib, чтобы указать на 64-разрядную версию для хорошей оценки), и это, похоже, уже скомпилировало мой код.

+0

У меня такая же проблема. Не могли бы вы рассказать мне, как именно вы исправили версию/usr/lib64, чтобы правильно указать на libGL.so.1? – Dino

+0

Удалить плохую ссылку, а затем воссоздать ее, указывая на правильный файл с помощью 'ln -s' – sirbrialliance