与过剩相关的问题:“未定义的引用......”

时间:2015-09-11 20:12:42

标签: c++ opengl

我正在尝试开始使用OpenGL,但似乎无法正确链接到某些基本库。特别是我会尝试使用一些过剩功能(如glutInit)。这是我的代码:

#include <GL/glut.h>

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (250, 250); 
    glutCreateWindow ("hello");

    glutMainLoop();
}

这是我的作品吐出来的:

g++  -Wl,--trace  -L/usr/lib/x86_64-linux-gnu/ -lglut -lGL -lGLU -lXi -lXmu -o texture texture.cpp
/usr/bin/ld: mode elf_x86_64
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.9/crtbegin.o
-lglut (/usr/lib/x86_64-linux-gnu//libglut.so)
-lGL (/usr/lib/x86_64-linux-gnu//libGL.so)
-lGLU (/usr/lib/x86_64-linux-gnu//libGLU.so)
-lXi (/usr/lib/x86_64-linux-gnu//libXi.so)
-lXmu (/usr/lib/x86_64-linux-gnu//libXmu.so)
/tmp/ccDzovHh.o
-lstdc++ (/usr/lib/gcc/x86_64-linux-gnu/4.9/libstdc++.so)
-lm (/usr/lib/x86_64-linux-gnu//libm.so)
-lgcc_s (/usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so)
/lib/x86_64-linux-gnu/libc.so.6
(/usr/lib/x86_64-linux-gnu/libc_nonshared.a)elf-init.oS
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
-lgcc_s (/usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so)
/usr/lib/gcc/x86_64-linux-gnu/4.9/crtend.o
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crtn.o
/tmp/ccDzovHh.o: In function `main':
texture.cpp:(.text+0x1e): undefined reference to `glutInit'
texture.cpp:(.text+0x28): undefined reference to `glutInitDisplayMode'
texture.cpp:(.text+0x37): undefined reference to `glutInitWindowSize'
texture.cpp:(.text+0x41): undefined reference to `glutCreateWindow'
texture.cpp:(.text+0x46): undefined reference to `glutMainLoop'
/usr/bin/ld: link errors found, deleting executable `texture'
collect2: error: ld returned 1 exit status
make: *** [texture] Error 1

我已经使用nm -D --defined-only /usr/lib/x86_64-linux-gnu/libglut.so检查了libglut.so,但它似乎有违规功能。

关于我做错了什么的想法?

此外,我重新安装了过剩(apt-get install --reinstall freeglut3-dev)并且没有任何改变。

1 个答案:

答案 0 :(得分:4)

图书馆需要追根溯源。试试:

g++ glutsample.cpp -o glutsample -lglut -lGL -lGLU -lXi -lXmu