Я пытаюсь создать код из http://www.openglsuperbible.com/example-code/OpenGL компиляции Ошибки Ubuntu
с командой:
$ cmake -G "Unix Makefiles" ; make clean ; make all
Я установил следующие пакеты для того, чтобы подготовить систему:
xrandr libxrandr x11-xserver-utils libxrandr-dev libglfw2 libglfw-dev xorg-dev libx11-dev libgl-dev libglu-dev libgl1-mesa-dev freeglut3 freeglut3-dev mesa-common-dev freeglut3-dev build-essential libx11-dev libx11-*
Возможно, я пропустил некоторые из пакетов, которые я установил в этом списке, извиняюсь.
Тогда я изменил CMakeList.txt для того, чтобы добавить в связующей фазе следующие вещи:
glfw GL rt glut X11 dl Xrandr Xext GLEW GLU
Тогда я пытаюсь скомпилировать, но он не на стадии компоновки:
/opt/sb6code/src/xraw/xraw.c: In function ‘CreateWindow’:
/opt/sb6code/src/xraw/xraw.c:106:14: warning: assignment makes pointer from integer without a cast [enabled by default]
Linking C executable bin/xraw
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'XOpenDisplay'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'XCloseDisplay'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'XCreateColormap'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'XCreateWindow'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'XMapWindow'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'glXCreateContextAttribsARB'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function Cleanup: error: undefined reference to 'XDestroyWindow'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function Cleanup: error: undefined reference to 'XCloseDisplay'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function main: error: undefined reference to 'XNextEvent'
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function main: error: undefined reference to 'XGetWindowAttributes'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/xraw] Errore 1
make[1]: *** [CMakeFiles/xraw.dir/all] Errore 2
make: *** [all] Errore 2
Теперь я попытался выполнить поиск в Интернете и даже здесь, на SO.com, для решения, но они продолжают говорить мне, чтобы связать библиотеки, которые я уже добавил, на этапе компоновки. Поэтому я не могу показаться сделать еще больший прогресс.
Есть ли у вас какие-то знания или подсказки, которые могли бы мне помочь?
Хорошо, стимулируется ответами я пошел в каталог CMakeFiles и искал файл конфигурации, который управляет компиляцией. Я узнал, что по некоторым причинам он пропускал некоторые флаги, указанные в CMakeLists, несмотря на мое обновление.
Так что теперь сборник линия выглядит следующим образом:
/usr/bin/cc CMakeFiles/xraw.dir/src/xraw/xraw.c.o -o bin/xraw -L/opt/sb6code/lib -rdynamic -lGL -lglut -lGLU -lm -lX11 -ldl -lGLEW -lXrandr -lXext -lrt -lglfw -Wl,-rpath,/opt/sb6code/lib
И ошибки сводится к:
CMakeFiles/xraw.dir/src/xraw/xraw.c.o:xraw.c:function CreateWindow: error: undefined reference to 'glXCreateContextAttribsARB'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/xraw] Errore 1
make[1]: *** [CMakeFiles/xraw.dir/all] Errore 2
make: *** [all] Errore 2
Другие намеки? :)
Side Примечание: Я также установил библиотеку CUDA и под путем
/usr/lib/nvidia-304/
Я посчастливилось иметь
alt_ld.so.conf libnvidia-ml.so.1
bin/ libnvidia-ml.so.304.88
ld.so.conf libnvidia-opencl.so.1
libcuda.so libnvidia-opencl.so.304.88
libcuda.so.1 libnvidia-tls.so.304.88
libcuda.so.304.88 libnvidia-wfb.so.1
libGL.so libnvidia-wfb.so.304.88
libGL.so.1 libOpenCL.so
libGL.so.304.88 libOpenCL.so.1
libnvcuvid.so libOpenCL.so.1.0
libnvcuvid.so.1 libOpenCL.so.1.0.0
libnvcuvid.so.304.88 libXvMCNVIDIA_dynamic.so.1
libnvidia-cfg.so libXvMCNVIDIA.so
libnvidia-cfg.so.1 libXvMCNVIDIA.so.1
libnvidia-cfg.so.304.88 libXvMCNVIDIA.so.304.88
libnvidia-compiler.so tls/
libnvidia-compiler.so.1 vdpau/
libnvidia-compiler.so.304.88 xorg/
libnvidia-glcore.so.304.88 XvMCConfig
libnvidia-ml.so
который я хотел бы использовать, так как я не уверен, что моя графическая карта Intel поддерживает OpenGl 4. *, которую я буду использовать с книгой, в то время как nvidia поддерживает 4.2.
На самом деле я не могу найти ничего хорошего в этом вопросе, книга удобно избегает инструкций по установке.
Временное решение: я узнал, что это единственный исходный файл, который не работает. Удаление его файлов и конфигурация CMakeList.txt кажутся мудрыми, пока кто-то не обнаружит другое решение.
Кроме того, мне пришлось использовать optirun для запуска исполняемых файлов, если другие люди с шмелями/nvidia задаются вопросом, почему их программы не работают.
Вы имели в виду 'cmake -G ...'? – mathk
Да, я прошу прощения, я не c & p :-) – TimothyB17