Important: Please read the Qt Code of Conduct -

Linux: Linking with static Qt fails

  • I am attempting to build FlightGear on an Ubuntu 14.04 system. Unfortunately, the Ubuntu 14.04 Qt libraries are not up to par for what is required for FlightGear. Since I will only be using this Qt build for this single application, I opted for a static build.

    I used the following configure command:

    ./configure -static -opensource -nomake tests -gtkstyle -prefix /home/user/Qt/5.4/Src/qtbuild -no-rpath -no-compile-examples -system-proxies -skip qtwebkit -skip qtwebkit-examples -nomake tools -nomake examples -skip script -release -skip multimedia -verbose -l dl -skip location -skip multimedia -skip quick1 -skip quickcontrols -skip sensors -skip serialport -skip svg -skip tools -skip translations -skip wayland -skip webchannel -skip webengine -skip xmlpatterns -skip activeqt -skip connectivity -skip declarative -skip doc -skip enginio -skip graphicaleffects -skip imageformats -skip websockets

    The compile appear to work just fine, but as soon as I attempt build FlightGear I get the following error at the linking stage:

    Linking CXX executable fgfs
    /usr/bin/ld: /home/charles/Qt/5.4/Src/qtbuild/lib/libQt5Core.a(qlibrary_unix.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
    /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/ error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status

    This appears to be an error with my static Qt build not being linked to -- or something? The above configure command is not my original. I had added -l dl in order to fix the problem, but to no avail. Any help at all would be appreciated!

  • I suppose I got it sorted by adding an -ldl flag in the FlightGear compile. Strangely enough, the first time I tried it it didn't work at all. I tried it again and it magically worked. Now I'm going to be building/rebuilding for the next several hours just to figure out how exactly I fixed it...

Log in to reply