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 28.2k 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 Offline
    R Offline
    Ram_Thakkar77
    wrote on last edited by
    #1

    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 1 Reply Last reply
    0
    • 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

                                          • Login

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