Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Urgent Help Needed to build Linux distribution
Forum Updated to NodeBB v4.3 + New Features

Urgent Help Needed to build Linux distribution

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
63 Posts 4 Posters 29.7k Views 2 Watching
  • 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.
  • R Ram_Thakkar77

    Hello there,

    I m a newbie for linux environment. As per our need i developed one application using QT on linux. Now i want to distribute linux build for other computer but after build its work only in my system. I tried some link available on .net and found one link suggesting to change in .pro file like "QMAKE_LFLAGS += -Wl,--rpath=\$$ORIGIN/lib". I also followed same steps but no luck. I m just stretching my hair and roaming in dark. So it will be a great help if anyone point me out to build QT linux redistrution.

    Ram Thakkar.

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @Ram_Thakkar77 Please read http://doc.qt.io/qt-5/linux-deployment.html
    Especially "Creating the Application Package" section.

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

    1 Reply Last reply
    1
    • R Offline
      R Offline
      Ram_Thakkar77
      wrote on last edited by
      #3

      @jsulm ,Thank you very much for your reply. I will surely look into that mentioned link and get back to you.

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Ram_Thakkar77
        wrote on last edited by
        #4

        @jsulm , i tried above mentioned solution but no luck yet. Below is the code which i used in .sh file and .pro file:

        QTBrowser.sh

        #!/bin/sh
        appname=`basename $0 | sed s,\.sh$,,`
        
        dirname=`dirname $0`
        tmp="${dirname#?}"
        
        if [ "${dirname%$tmp}" != "/" ]; then
        dirname=$PWD/$dirname
        fi
        LD_LIBRARY_PATH=$dirname
        export LD_LIBRARY_PATH
        $dirname/$appname "$@"
        

        my .pro file code

        #-------------------------------------------------
        #
        # Project created by QtCreator 2017-02-09T15:01:26
        #
        #-------------------------------------------------
        
        QT       += core gui
        
        QT += webenginewidgets
        
        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
        
        TARGET = QTBrowser
        TEMPLATE = app
        
        # The following define makes your compiler emit warnings if you use
        # any feature of Qt which as been marked as deprecated (the exact warnings
        # depend on your compiler). Please consult the documentation of the
        # deprecated API in order to know how to port your code away from it.
        DEFINES += QT_DEPRECATED_WARNINGS
        
        # You can also make your code fail to compile if you use deprecated APIs.
        # In order to do so, uncomment the following line.
        # You can also select to disable deprecated APIs only up to a certain version of Qt.
        #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
        
        
        SOURCES += main.cpp\
                mainbrowser.cpp
        
        HEADERS  += mainbrowser.h
        
        FORMS    += mainbrowser.ui
        
        
        QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
        
        

        is there any other changes in project settings; which i am missing in project setting file?

        jsulmJ 1 Reply Last reply
        0
        • R Ram_Thakkar77

          @jsulm , i tried above mentioned solution but no luck yet. Below is the code which i used in .sh file and .pro file:

          QTBrowser.sh

          #!/bin/sh
          appname=`basename $0 | sed s,\.sh$,,`
          
          dirname=`dirname $0`
          tmp="${dirname#?}"
          
          if [ "${dirname%$tmp}" != "/" ]; then
          dirname=$PWD/$dirname
          fi
          LD_LIBRARY_PATH=$dirname
          export LD_LIBRARY_PATH
          $dirname/$appname "$@"
          

          my .pro file code

          #-------------------------------------------------
          #
          # Project created by QtCreator 2017-02-09T15:01:26
          #
          #-------------------------------------------------
          
          QT       += core gui
          
          QT += webenginewidgets
          
          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
          
          TARGET = QTBrowser
          TEMPLATE = app
          
          # The following define makes your compiler emit warnings if you use
          # any feature of Qt which as been marked as deprecated (the exact warnings
          # depend on your compiler). Please consult the documentation of the
          # deprecated API in order to know how to port your code away from it.
          DEFINES += QT_DEPRECATED_WARNINGS
          
          # You can also make your code fail to compile if you use deprecated APIs.
          # In order to do so, uncomment the following line.
          # You can also select to disable deprecated APIs only up to a certain version of Qt.
          #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
          
          
          SOURCES += main.cpp\
                  mainbrowser.cpp
          
          HEADERS  += mainbrowser.h
          
          FORMS    += mainbrowser.ui
          
          
          QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
          
          

          is there any other changes in project settings; which i am missing in project setting file?

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #5

          @Ram_Thakkar77 You don't need the rpath line at the end of your pro file if you use the script to start your app.
          What is the problem now with this script?

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

          R 1 Reply Last reply
          0
          • jsulmJ jsulm

            @Ram_Thakkar77 You don't need the rpath line at the end of your pro file if you use the script to start your app.
            What is the problem now with this script?

            R Offline
            R Offline
            Ram_Thakkar77
            wrote on last edited by
            #6

            Thanks for prompt reply. Let me remove the rpath from .pro file and check. Will get back to you very soon.

            R 1 Reply Last reply
            0
            • R Ram_Thakkar77

              Thanks for prompt reply. Let me remove the rpath from .pro file and check. Will get back to you very soon.

              R Offline
              R Offline
              Ram_Thakkar77
              wrote on last edited by
              #7

              @jsulm , i remove that last file from .pro file and build new executable, after running .sh file i m getting below error:

              '/root/Desktop/QTEXETesting/QTBrowser.sh' 
              /root/Desktop/QTEXETesting/QTBrowser: error while loading shared libraries: libQt5WebEngineWidgets.so.5: cannot open shared object file: No such file or directory
              
              

              I already pasted all .so files in same folder where my .sh file.

              any suggestion.

              jsulmJ 1 Reply Last reply
              0
              • p3c0P Offline
                p3c0P Offline
                p3c0
                Moderators
                wrote on last edited by
                #8

                @Ram_Thakkar77 As a simple test, just copy all the Qt libraries onto the deployment machine, keep the executable in the same directory, set the library path and try executing the application directly without any script. If it doesn't work, check the output of ldd on the application binary.

                157

                1 Reply Last reply
                1
                • R Ram_Thakkar77

                  @jsulm , i remove that last file from .pro file and build new executable, after running .sh file i m getting below error:

                  '/root/Desktop/QTEXETesting/QTBrowser.sh' 
                  /root/Desktop/QTEXETesting/QTBrowser: error while loading shared libraries: libQt5WebEngineWidgets.so.5: cannot open shared object file: No such file or directory
                  
                  

                  I already pasted all .so files in same folder where my .sh file.

                  any suggestion.

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #9

                  @Ram_Thakkar77 Is libQt5WebEngineWidgets.so.5 in the same directory as the script? Can you start your app manually from command line after entering the directory where it is? Do you get the same error then?

                  NOTE: after changing pro file you need to rerun qmake and rebuild completely!

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

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    Ram_Thakkar77
                    wrote on last edited by Ram_Thakkar77
                    #10

                    I already built new one , checked with ldd command and pasted all dependency in same folder where my .sh file but still getting same error.

                    below is the link of screen shot of same :
                    Screenshot

                    jsulmJ 1 Reply Last reply
                    0
                    • p3c0P Offline
                      p3c0P Offline
                      p3c0
                      Moderators
                      wrote on last edited by p3c0
                      #11

                      @Ram_Thakkar77 It is clear from the screen-shot that you are not exporting the correct library path. Also ldd would have already shown the error and you would have noticed it.

                      157

                      1 Reply Last reply
                      0
                      • R Ram_Thakkar77

                        I already built new one , checked with ldd command and pasted all dependency in same folder where my .sh file but still getting same error.

                        below is the link of screen shot of same :
                        Screenshot

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #12

                        @Ram_Thakkar77 So, you put all libs in lib subdirectory?
                        Then you need to change the script: LD_LIBRARY_PATH must contain the directory where the libs are.

                        LD_LIBRARY_PATH=$dirname/lib
                        

                        Also, why is Makefile there? It is only needed to build the software.

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

                        R 1 Reply Last reply
                        1
                        • jsulmJ jsulm

                          @Ram_Thakkar77 So, you put all libs in lib subdirectory?
                          Then you need to change the script: LD_LIBRARY_PATH must contain the directory where the libs are.

                          LD_LIBRARY_PATH=$dirname/lib
                          

                          Also, why is Makefile there? It is only needed to build the software.

                          R Offline
                          R Offline
                          Ram_Thakkar77
                          wrote on last edited by
                          #13

                          @jsulm Really very sorry by mistake uploaded wrong image and corrected that link. Please check it once again.

                          jsulmJ 1 Reply Last reply
                          0
                          • R Ram_Thakkar77

                            @jsulm Really very sorry by mistake uploaded wrong image and corrected that link. Please check it once again.

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by
                            #14

                            @Ram_Thakkar77 Copy symbolic links as well, like: libQt5WebEngineWidgets.so.5, which points to libQt5WebEngineWidgets.so.5.7.1. Your app links against libQt5WebEngineWidgets.so.5 not directly against libQt5WebEngineWidgets.so.5.7.1, so you need those links (as alternative you can rename the libs like: libQt5WebEngineWidgets.so.5 --> libQt5WebEngineWidgets.so.5.7.1).

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

                            R 1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @Ram_Thakkar77 Copy symbolic links as well, like: libQt5WebEngineWidgets.so.5, which points to libQt5WebEngineWidgets.so.5.7.1. Your app links against libQt5WebEngineWidgets.so.5 not directly against libQt5WebEngineWidgets.so.5.7.1, so you need those links (as alternative you can rename the libs like: libQt5WebEngineWidgets.so.5 --> libQt5WebEngineWidgets.so.5.7.1).

                              R Offline
                              R Offline
                              Ram_Thakkar77
                              wrote on last edited by
                              #15

                              @jsulm, you are the savior for me. I pasted all .so files in same directory. Now its not giving error which i was getting previously. I m getting some new error like:

                              /root/Desktop/QTEXETesting/QTBrowser: /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5: no version information available (required by /root/Desktop/QTEXETesting/libQt5WebEngineWidgets.so.5)
                              
                              

                              and here is the link for screen shot of same : Screen Shot

                              jsulmJ 1 Reply Last reply
                              0
                              • R Ram_Thakkar77

                                @jsulm, you are the savior for me. I pasted all .so files in same directory. Now its not giving error which i was getting previously. I m getting some new error like:

                                /root/Desktop/QTEXETesting/QTBrowser: /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5: no version information available (required by /root/Desktop/QTEXETesting/libQt5WebEngineWidgets.so.5)
                                
                                

                                and here is the link for screen shot of same : Screen Shot

                                jsulmJ Offline
                                jsulmJ Offline
                                jsulm
                                Lifetime Qt Champion
                                wrote on last edited by
                                #16

                                @Ram_Thakkar77 You did not copy all needed libraries! For example libQt5Core.so.5.7.1 is missing: you only have the link libQt5Core.so.5. Please make sure you really have all libs and symbolic links there.

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

                                1 Reply Last reply
                                0
                                • p3c0P Offline
                                  p3c0P Offline
                                  p3c0
                                  Moderators
                                  wrote on last edited by
                                  #17

                                  I still have doubt if library path is set correctly because the system is referring to libraries in /usr/lib where as it should have been the new path.

                                  157

                                  jsulmJ 1 Reply Last reply
                                  0
                                  • p3c0P p3c0

                                    I still have doubt if library path is set correctly because the system is referring to libraries in /usr/lib where as it should have been the new path.

                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #18

                                    @p3c0 You're right! I didn't notice this.
                                    @Ram_Thakkar77 in the screen-shot you posted you can see that the system tries to load Qt libs from /usr/lib. Check your script, put

                                    echo $LD_LIBRARY_PATH
                                    

                                    after export LD_LIBRARY_PATH and post its output.

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

                                    R 1 Reply Last reply
                                    0
                                    • jsulmJ jsulm

                                      @p3c0 You're right! I didn't notice this.
                                      @Ram_Thakkar77 in the screen-shot you posted you can see that the system tries to load Qt libs from /usr/lib. Check your script, put

                                      echo $LD_LIBRARY_PATH
                                      

                                      after export LD_LIBRARY_PATH and post its output.

                                      R Offline
                                      R Offline
                                      Ram_Thakkar77
                                      wrote on last edited by Ram_Thakkar77
                                      #19

                                      @jsulm, here is the screen shot of echo $LD_LIBRARY_PATH and its showing correct path.
                                      Screen shot

                                      jsulmJ p3c0P 2 Replies Last reply
                                      0
                                      • R Ram_Thakkar77

                                        @jsulm, here is the screen shot of echo $LD_LIBRARY_PATH and its showing correct path.
                                        Screen shot

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by jsulm
                                        #20

                                        @Ram_Thakkar77 Please put missing libs (not only links!) in the directory as I said before. For example:

                                        libQt5Core.so.5
                                        libQt5Core.so.5.7.1
                                        

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

                                        R 1 Reply Last reply
                                        0
                                        • R Ram_Thakkar77

                                          @jsulm, here is the screen shot of echo $LD_LIBRARY_PATH and its showing correct path.
                                          Screen shot

                                          p3c0P Offline
                                          p3c0P Offline
                                          p3c0
                                          Moderators
                                          wrote on last edited by
                                          #21

                                          @Ram_Thakkar77 Can you do this simple test?

                                          • From terminal navigate to the directory where the app binary and libraries are present
                                          • export LD_LIBRARY_PATH=/root/Desktop/QTEXETesting:$LD_LIBRARY_PATH
                                          • run binary as ./QTBrowser

                                          Post the output if you get any errors.

                                          157

                                          jsulmJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved