我想使用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
最佳答案
使用CMake时,可使用target_link_libraries
命令设置所需的库。通常,您将使用find_package(OpenGL)
收集OpenGL开发和库文件的位置,并将包变量用于target_link_libraries
命令。像这样:
find_package(OpenGL)
add_executable(foo …)
target_link_libraries(foo ${OPENGL_gl_LIBRARY} …)
关于c++ - C++ GL链接器未定义引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36457998/