External libraries on Raspberry Pi 3 B+



  • Hello. I followed all the steps of this guide and all seems correct.
    I tested it with a simple Hello World from the Raspberry.
    Now I want to deploy another program that uses external libraries (e.g. ffmpeg, bluez) but I cannot import them in the project with the simple command LIBS += -lbluetooth, and so I cannot include the headers. I think I'm missing some fundamental steps, such as the configuration of the cross compiler, but I don't know how to solve it. Theese libraries are correctly installed because I can use them in the same program that runs on desktop.
    Thanks


  • Qt Champions 2017

    Hi
    You should also compile those 3rd party libs with same compiler you used to produce a Qt version for the arm.
    The version you have installed on Desktop is for other CPU.
    So to get them on the board, they also need to be in an ARM version
    and copied to the image.
    That said, you might be able to find some precompiled you can use if compiler matches then one you are using.
    https://github.com/tgogos/rpi_ffmpeg

    Also, im not expert on cross compiling, so give it a day or two and
    someone might offer a better guide than i can.


  • Moderators

    @Crindu

    Hi and welcome to devnet forum

    When you want to deploy another application using external libraries, all should be already compiled and linked and you might have to check for documentation of the application itself.

    Otherwise you need to have a cross-compiler (as you already have) and compile and link the applciation as you would do for any other OS. Either you have these external libraries already compiled for raspberry PI, then you need to have the proper include files or you need to compile those libraries form source yourself.

    However, it is the setup of your .pro is teh same as for linux or windows, but you are choosing a different tool chain for compiling for embedded linux.



  • @koahnig @mrjj Thank you for the answers. I finally downloaded and compiled the library with the cross compiler. Then I added this in the pro file:
    INCLUDEPATH += /path/include
    LIBS += -L/path/lib -lavdevice
    Now I can include correctly the headers, but at run time I have an undefined reference error to the function called. Some ideas?


  • Qt Champions 2017

    @Crindu you need to deploy (copy) the library to your device (e.g. to /usr/lib) so the dynamic linker can pick it up. note that often some symbolic links libxxxx.so.2.1 belong to the library.

    Most often you can check ldd yourexe to see all dependencies (satisfied or not).

    regards



  • @aha_1980 Sorry, I just noticed that the problem is also at compile time. I copied the library on the device but nothing changed.
    I think the cross compiler finds the header, but not the libraries.
    Moreover, copying the library on the device, I have two different paths: on the device I save them in the /usr/lib folder, while in the computer I created a folder in my /home directory ( because I downloaded again the source and compiled with the cross compiler).


  • Moderators

    @Crindu

    Are you doing a dynamic link compilation?

    This includes a lib "stump" defining the access to the dynamic routines in the actual dynamic link library. Therefore, you should not confuse the libraries.



  • @koahnig Sorry I don't know what do you mean for dynamic link compilation.
    The cross compiler generates only .a files that are static library and I added these to the .pro file, maybe this is the problem.


  • Moderators

    @Crindu said in External libraries on Raspberry Pi 3 B+:

    @koahnig Sorry I don't know what do you mean for dynamic link compilation.
    The cross compiler generates only .a files that are static library and I added these to the .pro file, maybe this is the problem.

    When you create an application you have to decide how to link external libraries. Either "Static" or "Dynamically linked shared object libraries" (probably called in linux). In windows those libraries are called "dll"->"dynamic link library".
    The "dynamic linked shared object library" has typically extensions *.so and often followed by version numbers. Those go along with your application for deployment.

    When you are using a static library it is only one file per library. This file is directly linked to your application and makes the application typically much bigger.

    There are also the libraries with the "stumps" which have to be linked to your application. Typical extension is *.a. Typically they are smaller than the .so files and increase the size of your application insignificantly. The "stumps" tell your app how to access the "dynamic linked shared object library".

    If your library is called "somelibrary" you probably will have a file called "somelibrary.a" and a file "somelibrary.so"



  • @koahnig Ok thanks, I linked them dinamically but nothing, always undefined reference error. Maybe I did some mistakes in the toolchain, or in the settings of the cross compiler because this is very strange. In the project that runs on pc I didn't have all these problems


  • Moderators

    @Crindu Can you please show the actual errors? Or better the whole compiler output. You get undefined reference errors during linking of your app. Most probably the linker cannot find the lib or it isn't compatible.



  • In most cases there´s no need to compile 3rd party libs with the cross-compiler. You can install the dev packages on your rpi for most of the libs. To use them in you cross-compile projecte you have to rsync from rpi -> dev host again.



  • @jsulm

    09:30:14: Running steps for project untitled1...
    09:30:14: Configuration unchanged, skipping qmake step.
    09:30:14: Starting: "/usr/bin/make" 
    /home/cristiano/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/cristiano/raspi/sysroot -Wl,-rpath-link,/home/cristiano/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/cristiano/raspi/sysroot/lib/arm-linux-gnueabihf -o untitled1 main.o   -lpthread -L/home/cristiano/FFmpeg-compiled/compiled/lib -lavcodec -lavdevice -lavutil -lavformat -lavfilter -lswscale -lswresample 
    main.o: In function `main':
    /home/cristiano/untitled1/main.cpp:8: undefined reference to `av_register_all()'
    /home/cristiano/untitled1/main.cpp:9: undefined reference to `avcodec_register_all()'
    /home/cristiano/untitled1/main.cpp:10: undefined reference to `avdevice_register_all()'
    Makefile:139: recipe for target 'untitled1' failed
    collect2: error: ld returned 1 exit status
    make: *** [untitled1] Error 1
    09:30:14: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project untitled1 (kit: Raspberry kit)
    When executing step "Make"
    09:30:14: Elapsed time: 00:00.
    

    The libraries are compatible, this is the file command output:
    libavcodec.so.58.20.104: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=6182340cbdd8c56e7c410638a62e92dd0249e82c, stripped

    This is my pro. file:

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    SOURCES += main.cpp
    INSTALLS        = target
    target.files    = untitled1
    target.path     = /home/pi
    LIBS += -lpthread
    
    INCLUDEPATH += /home/cristiano/FFmpeg-compiled/compiled/include
    
    LIBS += -L/home/cristiano/FFmpeg-compiled/compiled/lib -lavcodec -lavdevice -lavutil -lavformat -lavfilter -lswscale -lswresample
    


  • @sneubert Can you post your rsync example? I don't know exactly what and where to copy. Do I have to copy only the folders in which FFmpeg was installed or everything from the Raspberry in the sysroot folder ?


  • Moderators

    @Crindu said in External libraries on Raspberry Pi 3 B+:

    /home/cristiano/FFmpeg-compiled/compiled/lib

    Are the libs really in this directory? Are they built using same compiler as you use for your app?



  • If you install for example libavcodec-dev on your rpi, the header and libraries get installed in /usr/...
    You now need the installed header and libraries on your development host. Your cross-compiler is working with a local copy of the rpi sysroot.

    Like in this guide https://wiki.qt.io/RaspberryPi2EGLFS every time you install some new dev libaries with apt-get on you rpi, you have to copy the new files to your development host.

    Take a look at Step 8.

    rsync -avz pi@raspberrypi.local:/lib sysroot
    rsync -avz pi@raspberrypi.local:/usr/include sysroot/usr
    rsync -avz pi@raspberrypi.local:/usr/lib sysroot/usr
    rsync -avz pi@raspberrypi.local:/opt/vc sysroot/opt
    

    As these libaries are in the system path of your local sysroot, you can now just include headers with #include <...> and link with LIBS += -l...



  • @jsulm Yes they are there and I built them with the cross compiler



  • @sneubert Ok thanks, something changed. Now I have a lot of compilation error relative to other libraries:

    11:28:58: Running steps for project untitled1...
    11:28:58: Configuration unchanged, skipping qmake step.
    11:28:58: Starting: "/usr/bin/make" 
    /home/cristiano/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/cristiano/raspi/sysroot -Wl,-rpath-link,/home/cristiano/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/cristiano/raspi/sysroot/lib/arm-linux-gnueabihf -o untitled1 main.o   -lavcodec -lavdevice -lavformat -lpthread 
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_create(unsigned int&, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::rfind(char, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopencv_core.so.2.4: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libsnappy.so.1: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append(char const*, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libzmq.so.5: undefined reference to `VTT for std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::_M_sync(char*, unsigned int, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_assign(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/librubberband.so.2: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::reserve(unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libjack.so.0: undefined reference to `operator delete(void*, unsigned int)@CXXABI_1.3.9'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libsnappy.so.1: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize(unsigned int, char)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libzmq.so.5: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libjack.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_mutate(unsigned int, unsigned int, wchar_t const*, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopencv_core.so.2.4: undefined reference to `operator delete[](void*, unsigned int)@CXXABI_1.3.9'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_last_not_of(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libjack.so.0: undefined reference to `std::runtime_error::runtime_error(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `VTT for std::__cxx11::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux(unsigned int, unsigned int, unsigned int, char)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::random_device::_M_init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::runtime_error::runtime_error(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libzmq.so.5: undefined reference to `vtable for std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_erase(unsigned int, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::range_error::range_error(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct(unsigned int, char)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_istringstream()@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_first_of(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `VTT for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `vtable for std::__cxx11::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::range_error::range_error(char const*)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_last_of(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libjack.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_first_not_of(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libjack.so.0: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopencv_core.so.2.4: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::swap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
    /home/cristiano/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libopenmpt.so.0: undefined reference to `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const@GLIBCXX_3.4.21'
    Makefile:139: recipe for target 'untitled1' failed
    collect2: error: ld returned 1 exit status
    make: *** [untitled1] Error 1
    11:28:59: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project untitled1 (kit: Raspberry kit)
    When executing step "Make"
    11:28:59: Elapsed time: 00:00.
    


  • sorry you have to repeate Step 9 after rsync



  • @sneubert I just repeated step 9 but the errors remains



  • this seems to be a compiler missmatch between your cross-compiler an the compiler used to create the library, one thing you can try is to put

    #define _GLIBCXX_USE_CXX11_ABI 0
    

    before include any standard library in your code



  • @sneubert Unfortunately it doesn't work. I noticed that copying the file on the Raspberry and compiling from there, it works! And this is strange because the compiler should be the same as the toolchain



  • what version of gcc are you using for cross compiling

    /home/cristiano/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -v
    

    what version of gcc is on your rpi

    g++ -v 
    


  • @sneubert
    1:

    Using built-in specs.
    COLLECT_GCC=/home/cristiano/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
    COLLECT_LTO_WRAPPER=/home/cristiano/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../libexec/gcc/arm-linux-gnueabihf/4.8.3/lto-wrapper
    Target: arm-linux-gnueabihf
    Configured with: /home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/src/gcc-linaro-4.8-2014.03/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install --with-sysroot=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --disable-multilib --enable-multiarch --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gold --with-local-prefix=/home/zhehe01/work/bzr/pi-build/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-float=hard
    Thread model: posix
    gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) 
    
    

    2:

    Using built-in specs.
    COLLECT_GCC=g++
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
    Target: arm-linux-gnueabihf
    Configured with: ../src/configure -v --with-pkgversion='Raspbian 6.3.0-18+rpi1+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
    Thread model: posix
    gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1+deb9u1) 
    

    I think I need to update the cross compiler. Can I simply download the same version of the Raspberry and set it as compiler in the Qt Creator kit?



  • I always use the linaro cross-compiler, latest gcc 7.3.1 should do
    https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/
    But I think you have to rebuild qt with this compiler.



  • @sneubert Ok I'll try to repeat steps 10 and 11 with the latest version of gcc



  • @sneubert It worked at first try! Thank you so much, you really helped me a lot!!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.