GLEW and glfw compile error: undefined reference to symbol 'XConvertSelection'

12,354

Solution 1

Ok, after some research I found that the DSO error which I got means that the order of the includes I've implemented is incorrect and cause the compilation to fail.

So what I did is I used the command:

pkg-config --static --libs x11 xrandr xi xxf86vm glew glfw3

To get the packages I need for them to run and in the right order.

Then I compiled the project accordingly. That's it :)

Solution 2

I got same error "undefined reference to symbol 'XConvertSelection'" while compiling example from Irrlicht 3D, solved by adding "-lX11".

Then I got error "undefined reference to symbol 'XF86VidModeGetGamma'", solved by adding "-lXxf86vm"

Share:
12,354

Related videos on Youtube

LessComplexity
Author by

LessComplexity

Updated on August 24, 2022

Comments

  • LessComplexity
    LessComplexity over 1 year

    I'm trying to compile this code:

    #include <stdio.h>
    #include <stdlib.h>
    
    #include <GL/glew.h>
    
    #include <GLFW/glfw3.h>
    GLFWwindow* window;
    
    #include <glm/glm.hpp>
    using namespace glm;
    
    int main( void )
    {
        // Initialise GLFW
        if( !glfwInit() )
        {
            fprintf( stderr, "Failed to initialize GLFW\n" );
            return -1;
        }
    
        glfwWindowHint(GLFW_SAMPLES, 4);
        glfwWindowHint(GLFW_RESIZABLE,GL_FALSE);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
        // Open a window and create its OpenGL context
        window = glfwCreateWindow( 1024, 768, "Playground", NULL, NULL);
        if( window == NULL ){
            fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n" );
            glfwTerminate();
            return -1;
        }
        glfwMakeContextCurrent(window);
    
        // Initialize GLEW
        if (glewInit() != GLEW_OK) {
            fprintf(stderr, "Failed to initialize GLEW\n");
            return -1;
        }
    
        // Ensure we can capture the escape key being pressed below
        glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
    
        // Dark blue background
        glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
    
        do{
            // Draw nothing, see you in tutorial 2 !
    
            // Swap buffers
            glfwSwapBuffers(window);
            glfwPollEvents();
    
        } // Check if the ESC key was pressed or the window was closed
        while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
               glfwWindowShouldClose(window) == 0 );
    
        // Close OpenGL window and terminate GLFW
        glfwTerminate();
    
        return 0;
    }
    

    It's a code from a tutorial I found about OpenGL, I program mostly in Java when it comes to OpenGL, but I wanted to try something new so I went to try in C++.

    I'm using QtCreator for this project. At first I included GLEW and glfw3 libraries: enter image description here

    And the same for the glfw library file.

    And then, when I try compiling the program I get this error: enter image description here

    In text:

    $ /home/sapir/Qt/5.4/gcc_64/bin/qmake -spec linux-g++ CONFIG+=debug -o Makefile ../Test/Test.pro
    $ g++ -Wl,-rpath,/home/sapir/Qt/5.4/gcc_64 -o Test main.o   -L/home/sapir/Dropbox/Development/Computer/openGLTest/Test/../../../../../../../usr/local/lib/ -lglfw3 -lGLEW -lGLEWmx 
    /usr/bin/ld: /home/sapir/Dropbox/Development/Computer/openGLTest/Test/../../../../../../../usr/local/lib//libglfw3.a(glx_context.c.o): undefined reference to symbol 'glXQueryExtension'
    //usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    make: *** [Test] Error 1
    23:12:13: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project Test (kit: Desktop Qt 5.4.0 GCC 64bit)
    When executing step "Make"
    23:12:13: Elapsed time: 00:00.
    

    I tired searching for an answer in forums and here, but I couldn't find anything that solved this problem. Anybody got any Ideas?

    After adding

    -lXxf86vm -lXrandr -lGL -lGLU -lXi
    

    to the gcc compiler, I get a different error, which contains:

    /usr/bin/ld: /home/sapir/Dropbox/Development/Computer/openGLTest/Test/../../../../../../../usr/local/lib//libglfw3.a(x11_window.c.o): undefined reference to symbol 'XConvertSelection'
    

    This is my make file: http://pastebin.com/xL5Hpwsf

    And this is my .pro file: http://pastebin.com/yhkV7nn7

  • étale-cohomology
    étale-cohomology about 7 years
    You ended hours of frustration