【发布时间】:2014-05-22 12:53:07
【问题描述】:
在 ubuntu 14.04 下使用 OpenGL 和 wxWidgets 编译我的项目时,我收到了这个错误(链接 .o):
cc GUI.o Fenetre.o Vue_OpenGL.o Enceinte.o Systeme.o GLNeon.o GLArgon.o Particule.o Vecteur.o `wx-config --libs gl,core,base` -lGLU -lGL -lglut -lrt -o GUI
/usr/bin/ld: GUI.o: référence au symbole non défini «__cxa_pure_virtual@@CXXABI_1.3»
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [GUI] Erreur 1
我安装了所有库(freeglut3、freeglut3 -dev、...)
这是我的生成文件:
CXX=g++-4.8
CXXFLAGS += `wx-config --cxxflags` -std=c++11
CXXFLAGS += -g
LDLIBS += `wx-config --libs gl,core,base` -lGLU -lGL -lglut -lrt
TARGETS=GUI
all:: $(TARGETS)
Fenetre.o : Fenetre.cc Fenetre.h
GUI.o : GUI.cc GUI.h
Vue_OpenGL.o : Vue_OpenGL.cc Vue_OpenGL.h
Vecteur.o: Vecteur.cc Vecteur.h
Systeme.o: Systeme.cc Systeme.h GenerateurAleatoire.h
Particule.o: Particule.cc Particule.h
GLArgon.o: GLArgon.cc GLArgon.h
GLNeon.o: GLNeon.cc GLNeon.h
Enceinte.o: Enceinte.h Enceinte.cc
GUI : GUI.o Fenetre.o Vue_OpenGL.o Enceinte.o Systeme.o GLNeon.o GLArgon.o Particule.o Vecteur.o
【问题讨论】:
-
Linker order - GCC的可能重复
-
将
-lstdc++添加到LDLIBS的末尾应该可以解决这个问题。 -
嗨,所以我添加了这个并且我有一个新错误 cc GUI.o Fenetre.o Vue_OpenGL.o Enceinte.o Systeme.o GLNeon.o GLArgon.o Particule.o Vecteur.o @987654326 @ -lGLU -lGL -lglut -lrt -lstdc++ -o GUI /usr/bin/ld: Systeme.o: référence au symbole non défini «cos@@GLIBC_2.2.5» //lib/x86_64-linux-gnu/libm。 so.6:添加符号时出错:命令行collect2中缺少DSO:错误:ld返回1退出状态make:*** [GUI] Erreur 1任何想法?
-
您还需要添加
-lm;) 链接器基本上是在告诉您需要做什么:lib m .so.6 是-lm。
标签: c++ opengl linker makefile wxwidgets