C ++ GL链接器未定义引用

时间:2016-04-06 17:17:20

标签: c++ opengl linker cmake g++

使用Ubuntu 14.04,g ++,我想将项目从make移植到cmake。我sudo make install时出现以下错误。

Linking CXX executable texmapper
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../..
/lib/libplibssg.a(ssgLeaf.o): undefined reference to symbol 'glNewList'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libGL.so: 
error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

此网站上遇到的许多链接器错误。但通常建议的修复"-lGL -lGLU -lglut不起作用。我也试过了一些这样的排列。

在对glNewList的未定义引用之前,我对glPopClientAttrib有一个未定义的引用,我通过添加lGL解决了这个问题,如下所示:

set(CMAKE_CXX_FLAGS "-lGL")

所以我走在正确的轨道上,但答案是在逃避我。

编辑:完整命令(详细):

/usr/bin/c++   -lGLEW -lGL -lGLU -lglut    CMakeFiles/texmapper.dir/maintexmapper.o CMakeFiles/texmapper.dir/ssgSaveAC.o  -o texmapper -rdynamic -Wl,-Bstatic -lplibsg -lplibssg -lplibul -Wl,-Bdynamic ../../libs/tgf/libtgf.so ../../libs/tgfclient/libtgfclient.so -lglut -lXmu -lXi -lpng -lz -lSM -lICE -lX11 -lXext -lXrandr -Wl,-rpath,/home/jeroen/Thesis/torcsCMAKE/trunk/src/libs/tgf:/home/jeroen/Thesis/torcsCMAKE/trunk/src/libs/tgfclient

1 个答案:

答案 0 :(得分:1)

使用CMake,使用target_link_libraries命令设置所需的库。通常,您将使用find_package(OpenGL)来收集OpenGL开发和库文件的位置,并使用target_link_libraries命令的包变量。像这样:

find_package(OpenGL)
add_executable(foo …)
target_link_libraries(foo ${OPENGL_gl_LIBRARY} …)