Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

X11/Xlib.h: No such file or directory



  • Hello,

    Cross compiling Qt for ARM board.

    Installed all the depencies from this http://wiki.qt.io/Building_Qt_5_from_Git

    sudo apt-get build-dep qt5-default
    
    sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev
    

    If this option is given -no-xcb no errors, makefile get created.
    If it's -qt-xcb than this the error, Searched the xlib.h no file in the source tree.

    
    /home/mars/qt-everywhere-opensource-src-5.5.1/qtbase/config.tests/x11/xlib/xlib.cpp:34:22: fatal error: X11/Xlib.h: No such file or directory
     #include <X11/Xlib.h>
                          ^
    compilation terminated.
    make: *** [xlib.o] Error 1
    
    

    How to solve this.

    Thank you,
    Answers Appreciated



  • @marvic_39
    You can add Xlib.h to your system by running the following...

    sudo apt-get install libx11-dev


  • Yes, libx11-dev is already installed.
    All these are already installed.

    sudo apt-get install libx11-dev libavahi-gobject-dev libSM-dev libfontconfig-dev 
    libXext-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev 
    libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
    

  • Lifetime Qt Champion

    Hi,

    Did you install these for your target ?



  • @SGaist
    Cross compiling for Odroid, above error flashed.

    For BeagalBone board with same configuration -qt-xcb able to build and installed.



  • I Searched it again xlib.h is in system dir /usr/include/X11
    Used PATH to this folder, still it's flashing the error.

    Do i have to do any path settings in qmake.conf located at this

    /home/mars/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/devices/linux-odroid-xu4-g++
    

    or

    /home/mars/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/linux-arm-linaro-gnueabihf-g++
    

  • Lifetime Qt Champion

    Since you're cross-compiling, you should get them for your target device.



  • @SGaist

    Ok. But, Same setup worked for other ARM device and able to compile apps.

    Why it is not working for this device? Installed the dependencies.


  • Lifetime Qt Champion

    Without any details about your device/linux distribution it's pretty much Crystal Ball Debugging. As to why its working for other devices: what is different between these other devices and this one ?



  • @SGaist

    Sorry, i have not mentioned it.

    I am not compiling on target board directly. Cross compiling using Linaro tool chains for Odroid XU4.

    Took this source code qt-everywhere-opensource-src-5.2.0
    For BeagalBone "-qt-xcb" option in configure worked without any error and build created. qmake worked fine in QtCreator.

    For Odroid XU4 "-qt-xcb" option in configure flashing error

    **X11/Xlib.h: No such file or directory**
    

    If it is -no-xcb this will get compiled and build created without that error.
    Even if i do not give xcb option in configure it compiles and builds the code.

    So, how to build for Odroid XU4 with xcb support.


  • Lifetime Qt Champion

    You have to add the needed Xorg dev packages to your Odroid sysroot



  • @SGaist

    Well, i am not using sysroot. Instead , Using -prefix option so that all that make install stuff goes to /usr/local/qt-5.2-odroid.

    Created a folder in /home/odroid, Did the configure with below options,

    ../qt-everywhere-opensource-src-5.2.0/configure -v -opensource -confirm-license
    -prefix /usr/local/qt-5.2-odroid -no-largefile -no-accessibility -qt-zlib -no-gif -qt-libpng 
    -qt-libjpeg -no-nis -no-cups -xplatform linux-arm-linaro-gnueabihf-g++ -device linux-
    odroid-xu4-g++ -device-option CROSS_COMPILE=/usr/local/linaro/bin/arm-linux-
    gnueabihf- -no-xcb -no-c++11 -no-pch -nomake examples
    

    This will build, with -no-xcb option.

    From Qt Creator i will set the Compiler, Kit and qmake. Just build and deploy.
    And it worked well on Odroid XU4

    How to get through with -qt-xcb option for Odroid.
    For BeagalBone it works with -qt-xcb option.


  • Lifetime Qt Champion

    Then you have to provide all missing headers and libraries in your cross-compiler folders



  • @SGaist

    Yes, i copied all the required headers to that folder. Set PATH to that folder also.
    Still it's flashing error.

    For beagalbone, it compiled properly. How did that .conf file searched the files.

    Wjy Odroid .conf is not ? Any thing to be done for PATH setting


  • Lifetime Qt Champion

    You didn't provide the libraries.

    When cross-compiling, the compiler and linkers need to be able to access both the headers and corresponding libraries for the device or at least the architecture your are building for. These are usually provided in the sysroot of your device along with specific stuff to access e.g. the GPU so that you are building against the same set of libraries you'll be using for your device.

    Since you don't want to use the sysroot of your device, then you have to add everything by hand for your cross-toolchain to find.



  • @SGaist

    I understood about that, but

    For beagalbone ( Without sysroot ), build created and linked all libraries automaticall, i have not added any headers or libraries manully. This toolchain(Angstrom) having all the headers and correct paths.

    Same thing should go with Odroid?
    I am using this tool chain gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux to build Qt on Odroid. And this toolchains does not have few headers related xcb and others. Manually i added some. Libraries not located after searching.

    Any specific tool chains to build for Odroid XU4 .

    If build is without xcb, what all the features will be missing?


  • Lifetime Qt Champion

    Because Angstrom is not just a toolchain, it's a distribution. gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux is only a toolchain.



  • @SGaist

    I could not find xlib libraries in the system, even after installing all the dependencies.


  • Lifetime Qt Champion

    How did you install the dependencies ?



  • @SGaist

    sudo apt-get install libx11-dev libavahi-gobject-dev libSM-dev libfontconfig-dev
    libXext-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev
    libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev


  • Lifetime Qt Champion

    These are for your host system not for your target.



  • @SGaist

    Well, during building (configure) Qt on host this error is raised.
    How target comes into picture?


  • Lifetime Qt Champion

    Since you want to cross-compile Qt with X11 support you need to provide your cross-toolchain with both header and libraries for the architecture you are cross-compiling to.



  • @SGaist

    Ok, Where from i get libraries.


  • Lifetime Qt Champion

    2 solutions are possible:

    1. Cross-compile each dependency needed
    2. Get the packages from the distribution of your board, extract them somewhere and add the paths to your configure line.


  • @SGaist

    OK,

    Regarding first option,
    Headers and their linking headers are many, it's becoming difficult to get exact files and even difficult to compile.

    Regarding second option.
    I could not find the distribution for Odroid, If you can provide me some links to download it.

    Thank you.


  • Lifetime Qt Champion

    What linux flavor are you running on your Odroid ?



  • @SGaist

    ubuntu-15.04-mate-odroid-xu3-20150710


  • Lifetime Qt Champion

    So there you have it: it's an Ubuntu



  • @SGaist

    I checked this also gcc-4.7-linaro-rpi-gnueabihf.tbz still errors.
    Can you provide a link.


  • Lifetime Qt Champion

    Again, this is just a toolchain.

    There's no one link. Since you don't want to use the sysroot option, either go to packages.ubuntu.com and download there the dependencies you need or use your device, install all dependencies there, then copy them to your host computer.



  • @SGaist

    Yes, i gone through this ubuntu packages site, each header is dependends on other and its chain of it. Difficult to compile it

    That is the reason, i have asked you. is there any distribution (like angstrom) for Odroid?



  • Already installed all the xcb dependcies.

    sudo apt-get install libx11-dev libavahi-gobject-dev libSM-dev libfontconfig-dev
    libXext-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev
    libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
    

  • Lifetime Qt Champion

    You installed them on you host computer. Do it on the target


Log in to reply