Linker error : undefined reference to symbol 'glOrtho'

linker-errors, opengl

Solution

You need to link the OpenGL library:

g++ p1.cpp -lglut -lGL

Problem

I installed OpenGL packages in Ubuntu 13.04 ( `*mesa-common-dev freeglut3-dev*` ) and tried to run a sample program. ``` #include "GL/freeglut.h" #include "GL/gl.h" /* display function - code from: http://fly.cc.fer.hr/~unreal/theredbook/chapter01.html This is the actual usage of the OpenGL library. The following code is the same for any platform */ void renderFunction() { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); } /* Main method - main entry point of application the freeglut library does the window creation work for us, regardless of the platform. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE); glutInitWindowSize(500,500); glutInitWindowPosition(100,100); glutCreateWindow("OpenGL - First window demo"); glutDisplayFunc(renderFunction); glutMainLoop(); return 0; } ``` However, I encountered this error and don't know what to make of it. ``` ved@vedvals:~/Desktop/p1$ g++ p1.cpp -lglut /usr/bin/ld: /tmp/ccgGdeR2.o: undefined reference to symbol 'glOrtho' /usr/bin/ld: note: 'glOrtho' is defined in DSO /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 so try adding it to the linker command line /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: could not read symbols: Invalid operation collect2: error: ld returned 1 exit status ``` I had a look at OpenGL hello.c fails to build using CMake as the error is similar but I am not using CMake IS my code wrong or do I need to include/change/tweak some settings? I referred this site for installation and code : Setting up an OpenGL development environment in Ubuntu Linux

Original source