Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Unsolved cross compile for arm with boost lib

    Installation and Deployment
    3
    11
    3733
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      niokou last edited by

      Hello all,
      i'm new on this forum. I'm using QT since 3 months. It works fine, but I'm stuck with an error.
      I have this error when I try to compile my project:

      "cannot finf -lboost_system"
      

      I use QTcreator on ubuntu 14 I setup 2 kits to compile my project: desktop and another one for arm with arm-linux-gnueabihf-g++
      I need to use boost library, so in .pro file I added :

      LIBS += -lboost_system
      

      I had install all boost library.
      With the desktop kit it compile well and the apps works fine.
      But If I try to cross compile with arm-linux-gnueabihf-g++ I get this error:
      "cannot finf -lboost_system"

      Any idea what I miss or doing wrong ?

      Thanks

      1 Reply Last reply Reply Quote 0
      • SGaist
        SGaist Lifetime Qt Champion last edited by

        Hi and welcome to devnet,

        If you want to use boost on your target then you must make it available for your target also. How did you provide the dependencies for Qt in the first place ? If it is using your device root filesystem then install the boost library dev packages through your device package manager.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply Reply Quote 0
        • N
          niokou last edited by niokou

          Thanks sgaist for your answer.

          I use yocto/poky to compile the image and rootfs. I have include all the lib I need for my project and my target.
          I use a custom scritp to launch QT. In this script I had include:

          SOURCE /opt/.../environement-setup-cortexa5hf-vfp-poky-linux-gnueabi
          

          I have the boost library in the directory :
          opt/poky/1.5.sysroots/x86_64-pokysdk-linux/usr/include

          This way is a little bit nasty but it should works ?

          1 Reply Last reply Reply Quote 0
          • SGaist
            SGaist Lifetime Qt Champion last edited by

            The boost handling should rather be part of your .pro file i.e:

            INCLUDEPATH += /opt/poky/1.5.sysroots/x86_64-pokysdk-linux/usr/include
            LIBS += -L/opt/poky/1.5.sysroots/x86_64-pokysdk-linux/usr/lib
            

            Replace the lib path accordingly

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply Reply Quote 0
            • N
              niokou last edited by niokou

              I'm back into this project.
              I modified the pro file:

              INCLUDEPATH += /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/include
              LIBS += -L/opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/lib
              LIBS += -lboost_system
              

              all the .hpp files are in the folder:
              /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/include
              all the libboost***.so are in the folder:
              /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/lib

              Now when I include a boost header:

              #include <boost/asio/signal_set.hpp>
              

              I get these errors:

              /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/lib/libboost_system.so: 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'
              /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/lib/libboost_system.so: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()@GLIBCXX_3.4.21'
              collect2: error: ld returned 1 exit status
              

              It looks like it doesn't find some others libraries ?

              1 Reply Last reply Reply Quote 0
              • SGaist
                SGaist Lifetime Qt Champion last edited by

                Looks like you're not building your application with C++11 enabled.

                Add CONFIG += c++11 to your .pro file.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply Reply Quote 0
                • N
                  niokou last edited by

                  I already add to my .pro file:

                  CONFIG += C++11
                  QMAKE_CXXFLAGS += -std=C++11

                  As I compile with a sdk (gcc for arm) done from yocto for a Sama5d3, I guess I need to add something to the SDK or strait to the folder:
                  /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/...

                  What is needed to compile with ggc for arm with c++11 ?

                  When I use the kit destop every things works fine...

                  1 Reply Last reply Reply Quote 0
                  • jsulm
                    jsulm Lifetime Qt Champion last edited by

                    What is the gcc version you use for ARM?
                    QMAKE_CXXFLAGS += -std=C++11 is not needed, CONFIG += c++11 should be enough.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply Reply Quote 0
                    • N
                      niokou last edited by

                      I'm using arm-poky-linux-gnueabi-gcc (GCC) 4.8.1 and the sdk/toolchain 1.5
                      I should upgrade the toolchain to 2.0?

                      1 Reply Last reply Reply Quote 0
                      • jsulm
                        jsulm Lifetime Qt Champion last edited by

                        What does

                        ldd /opt/poky/1.6/sysroots/x86_64-pokysdk-linux/usr/lib/libboost_system.so
                        

                        say?

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply Reply Quote 0
                        • N
                          niokou last edited by niokou

                          I have installed the toolchain 2.0.1 with gcc for arm version 5.2.0.
                          Compilation works.
                          Now i try to debug on my target, but it seems that dbg don't find boost libraries.
                          I have this error when I start debugging I use the boost function:

                          Unable to find dynamic linker breakpoint function.
                          GDB will be unable to debug shared library initializers
                          and track explicitly loaded dynamic code.
                          Child exited with status 1
                          GDBserver exiting
                          Debugging has finished

                          dbg on target works fine if I don't use boost function and libraries.
                          On the target in the /usr/lib I have all the libboost*.so !!

                          Is it missing a setup in the configuration of the dbg ?

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post