Undefined Links Compiling OpenGL / glfw / glew on Ubuntu (g ++)

I follow this guide . i cmake'd and make/make install'd glfw and glew perfectly (as far as i know). However, when I try to compile a sample code ...

 #define GLEW_STATIC #include <GL/glew.h> #include <GLFW/glfw3.h> int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); return 0; } 

... using your linker flags ...

 -lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi 

... I get the following error:

 /usr/bin/ld: /usr/local/lib/libglfw3.a(x11_init.co): undefined reference to symbol 'XF86VidModeQueryExtension' /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1: error adding symbols: DSO missing from command line 

I made a Google mistake and someone suggested adding -lXxf86vm . He got rid of the original error, but added much more:

 /usr/local/lib/libglfw3.a(x11_init.co): In function `initExtensions': x11_init.c:(.text+0x1b93): undefined reference to `XineramaQueryExtension' x11_init.c:(.text+0x1bad): undefined reference to `XineramaIsActive' /usr/local/lib/libglfw3.a(x11_init.co): In function `_glfwCreateCursor': x11_init.c:(.text+0x22ee): undefined reference to `XcursorImageCreate' x11_init.c:(.text+0x23c5): undefined reference to `XcursorImageLoadCursor' x11_init.c:(.text+0x23d5): undefined reference to `XcursorImageDestroy' /usr/local/lib/libglfw3.a(x11_monitor.co): In function `_glfwPlatformGetMonitors': x11_monitor.c:(.text+0x743): undefined reference to `XineramaQueryScreens' 

How do I determine which flags I need? If that matters, this is how my make file is structured:

 CC = g++ COMPILER_FLAGS = -std=c++11 FILES = *.cpp LINKER_FLAGS = -lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -lXxf86vm OBJS = *.o LINUX_BIN = HelloWindow #Compile(output into error.txt if there is an error), link, then run linux: $(CC) $(COMPILER_FLAGS) -c $(FILES) 2> "errors.txt" $(CC) $(COMPILER_FLAGS) $(OBJS) -o $(LINUX_BIN) $(LINKER_FLAGS) ./$(LINUX_BIN) 

Thanks!

+7
ubuntu g ++ opengl glew glfw
source share
1 answer

Derhass was right. The following flags are used by me:

 -lGLEW -lglfw3 -lGL -lX11 -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lm -pthread 
+25
source share

All Articles