0
使用Ubuntu 14.04,g ++,我想将一个项目从make移植到cmake。当我sudo make install
获得以下错误。C++ GL链接未定义的参考
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
许多OpenGL程序使用glew库,所以也许尝试在那里添加-lGLEW? – Jas
感谢您的建议。在别人之前和之后尝试了-lGLEW,但它并未解决错误。 – jeroen
CMAKE_CXX_FLAGS包含要传递给C++编译器的选项。 '-l'选项,例如'-lGL',是链接器选项,不是编译器选项。 CMake期望'CXX_EXE_LINKER_FLAGS'中的链接器选项。参见[cmake-variables](https://cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html) –