freecraft
freecraft

Reputation: 3

c++ undefined reference errors when trying to compile opengl project

I tried to compile my c++/opengl-project with the g++ command. (I need this since I want to recompile it on every target system with a second self-written program.)

But when I execute:

g++ -Iinclude -Isrc $(pkg-config --cflags freetype2) -L/usr/X11R6/lib -L/usr/lib $(pkg-config --libs glew) -lglut $(pkg-config --libs glu) $(pkg-config --libs freetype2) main.cpp  (some more source files) src/Vec4.cpp

I get lots of 'undefined references' for gl/glu/glut/glew-functions, so I guess something fails with the libs:

/tmp/ccUm2dEl.o: In function `Box::render()':
Box.cpp:(.text+0x6e8): undefined reference to `glEnable'
Box.cpp:(.text+0x72c): undefined reference to `glBindTexture'
Box.cpp:(.text+0x736): undefined reference to `glBegin'
...
TextureManager.cpp:(.text+0x23b): undefined reference to `glTexParameteri'
TextureManager.cpp:(.text+0x295): undefined reference to `glTexImage2D'
collect2: ld gab 1 als Ende-Status zurück

I did some research, but according to what I found out the above command should be correct. I checked the pkg-config-calls as well and they seem to work. Before I tried the g++ command I used the Codeblocks IDE to compile it and it worked. Here are my settings:

In Compiler settings|Other options:

`pkg-config --cflags freetype2`

In Linker settings|Link libraries:

glut

In Linker settings|Other linker options:

`pkg-config --libs glu`
`pkg-config --libs glew`
`pkg-config --libs freetype2`

In Search directories|Compiler:

include
src

My system (Ubuntu Precise):

$ uname -a
Linux andromeda 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ g++ -dumpversion
4.6

glxinfo
GLX version: 1.4
OpenGL version string: 4.2.0 NVIDIA 304.43

Codeblocks-version: 10.04

Thanks in advice

Upvotes: 0

Views: 4247

Answers (1)

Some programmer dude
Some programmer dude

Reputation: 409136

The problem is most likely that you link in the wrong order. The GNU linker wants its libraries in kind of reverse order, so if you place the linker libraries last on the command line it should go better.

Upvotes: 1

Related Questions