SFML community forums
Help => Graphics => Topic started by: RobotGymnast on March 10, 2011, 10:39:04 pm
-
I'm compiling a simple program on Linux to open a window, but I'm getting linker errors in Render.cpp
Linking console executable: bin/Debug/RenderingTests
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::Initialize()':
Renderer.cpp:(.text+0xda): undefined reference to `glDisable'
Renderer.cpp:(.text+0xe4): undefined reference to `glDisable'
Renderer.cpp:(.text+0xee): undefined reference to `glEnable'
Renderer.cpp:(.text+0xf8): undefined reference to `glEnable'
Renderer.cpp:(.text+0x105): undefined reference to `glAlphaFunc'
Renderer.cpp:(.text+0x10f): undefined reference to `glMatrixMode'
Renderer.cpp:(.text+0x114): undefined reference to `glLoadIdentity'
Renderer.cpp:(.text+0x11e): undefined reference to `glMatrixMode'
Renderer.cpp:(.text+0x123): undefined reference to `glLoadIdentity'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SaveGLStates()':
Renderer.cpp:(.text+0x15a): undefined reference to `glPushAttrib'
Renderer.cpp:(.text+0x164): undefined reference to `glMatrixMode'
Renderer.cpp:(.text+0x169): undefined reference to `glPushMatrix'
Renderer.cpp:(.text+0x173): undefined reference to `glMatrixMode'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::RestoreGLStates()':
Renderer.cpp:(.text+0x185): undefined reference to `glPopAttrib'
Renderer.cpp:(.text+0x18f): undefined reference to `glMatrixMode'
Renderer.cpp:(.text+0x194): undefined reference to `glPopMatrix'
Renderer.cpp:(.text+0x19e): undefined reference to `glMatrixMode'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::Clear(sf::Color const&)':
Renderer.cpp:(.text+0x1ec): undefined reference to `glClearColor'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetProjection(sf::Matrix3 const&)':
Renderer.cpp:(.text+0x4aa): undefined reference to `glMatrixMode'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetViewport(sf::Rect<int> const&)':
Renderer.cpp:(.text+0x5c2): undefined reference to `glViewport'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetBlendMode(sf::Blend::Mode)':
Renderer.cpp:(.text+0x64a): undefined reference to `glEnable'
Renderer.cpp:(.text+0x65e): undefined reference to `__GLEW_EXT_blend_func_separate'
Renderer.cpp:(.text+0x67f): undefined reference to `__glewBlendFuncSeparateEXT'
Renderer.cpp:(.text+0x693): undefined reference to `glBlendFunc'
Renderer.cpp:(.text+0x6d6): undefined reference to `glDisable'
Renderer.cpp:(.text+0x6e8): undefined reference to `glBlendFunc'
Renderer.cpp:(.text+0x6fb): undefined reference to `glBlendFunc'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetTexture(sf::Image const*)':
Renderer.cpp:(.text+0x7a8): undefined reference to `glBindTexture'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetShader(sf::Shader const*)':
Renderer.cpp:(.text+0x844): undefined reference to `__glewUseProgramObjectARB'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float)':
Renderer.cpp:(.text+0x91c): undefined reference to `glColor4f'
Renderer.cpp:(.text+0x927): undefined reference to `glTexCoord2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float, float, float)':
Renderer.cpp:(.text+0x9b8): undefined reference to `glColor4f'
Renderer.cpp:(.text+0x9c9): undefined reference to `glTexCoord2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float, sf::Color const&)':
Renderer.cpp:(.text+0xa83): undefined reference to `glColor4f'
Renderer.cpp:(.text+0xa8e): undefined reference to `glTexCoord2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float, float, float, sf::Color const&)':
Renderer.cpp:(.text+0xb4f): undefined reference to `glColor4f'
Renderer.cpp:(.text+0xb60): undefined reference to `glTexCoord2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::ProcessVertex(float, float, float, float, float, float, float, float)':
Renderer.cpp:(.text+0xc02): undefined reference to `glColor4f'
Renderer.cpp:(.text+0xc13): undefined reference to `glTexCoord2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SaveGLStates()':
Renderer.cpp:(.text+0x17c): undefined reference to `glPushMatrix'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::RestoreGLStates()':
Renderer.cpp:(.text+0x1a7): undefined reference to `glPopMatrix'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::Clear(sf::Color const&)':
Renderer.cpp:(.text+0x1fa): undefined reference to `glClear'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::SetProjection(sf::Matrix3 const&)':
Renderer.cpp:(.text+0x4b3): undefined reference to `glLoadMatrixf'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::Begin(sf::Renderer::PrimitiveType)':
Renderer.cpp:(.text+0x86e): undefined reference to `glBegin'
Renderer.cpp:(.text+0x87e): undefined reference to `glBegin'
Renderer.cpp:(.text+0x88e): undefined reference to `glBegin'
Renderer.cpp:(.text+0x8a6): undefined reference to `glBegin'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::End()':
Renderer.cpp:(.text+0x8b1): undefined reference to `glEnd'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float)':
Renderer.cpp:(.text+0x941): undefined reference to `glVertex2f'
//usr/local/lib/libsfml-graphics-s.a(Renderer.cpp.o): In function `sf::Renderer::AddVertex(float, float, float, float)':
Renderer.cpp:(.text+0x9e3): undefined reference to `glVertex2f'
Could somebody shed some light on this?
-
You must link to OpenGL (-lGL).
-
Thanks - maybe that should be more explicit in the tutorial?
-
Some more linker errors required linking with jpeg, GLEW, and Xrandr.
-
You're not supposed to use static libraries on Linux. If you do, you'll have to link to all the SFML's external dependencies; there's no link step when building static libraries, so all the dependencies must be given to the linker when building your final application.
And yes, this point will be explained in the future tutorial ;)
-
I tried it with shared libraries, and got linker errors as a result. For some reason, it's working now, though. Thanks.