Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. qt does not try to find a 3rd party lib even though its location is specified
Qt 6.11 is out! See what's new in the release blog

qt does not try to find a 3rd party lib even though its location is specified

Scheduled Pinned Locked Moved Unsolved General and Desktop
qmakestracelinux
34 Posts 5 Posters 16.9k Views 1 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.
  • ohuohuoO Offline
    ohuohuoO Offline
    ohuohuo
    wrote on last edited by
    #1

    I put four 3rd party .so files in total in same folder. And qt can find 3 of them, except only one: libMPCtrl.so

    Below is part of my pro file: (notice that I just put three .so files to LIBS but interestingly, qt find another one automatically.) How can I make qt find the libMPCtrl.so ?

    unix{
    LIBS += -L$$PWD/lib -lhcnetsdk
    -lPlayCtrl
    -lMPCtrl
    }

    INCLUDEPATH += $$PWD/include/
    $$PWD/Configuration/Public/
    $$PWD/lib/

    (It doesn't matter whether I use . or $$PWD, same result.)

    I mean, actually instead of "cannot find it", qt even didn't TRY to find it. According to strace tool, qt never tried to open() this .so file.

    K 1 Reply Last reply
    0
    • A Offline
      A Offline
      asanka424
      wrote on last edited by
      #2

      FIrst thing you need to use $$PWD.
      Second if you use multiple lines to specify libraries with LIBS, you have to put new line escape charactor so that qmake disregards your line breaks.

      unix{
      LIBS += -L$$PWD/lib -lhcnetsdk
      -lPlayCtrl
      -lMPCtrl
      }

      INCLUDEPATH += $$PWD/include/
      $$PWD/Configuration/Public/
      $$PWD/lib/

      Thanks.
      Asanka

      ohuohuoO 1 Reply Last reply
      0
      • A asanka424

        FIrst thing you need to use $$PWD.
        Second if you use multiple lines to specify libraries with LIBS, you have to put new line escape charactor so that qmake disregards your line breaks.

        unix{
        LIBS += -L$$PWD/lib -lhcnetsdk
        -lPlayCtrl
        -lMPCtrl
        }

        INCLUDEPATH += $$PWD/include/
        $$PWD/Configuration/Public/
        $$PWD/lib/

        Thanks.
        Asanka

        ohuohuoO Offline
        ohuohuoO Offline
        ohuohuo
        wrote on last edited by ohuohuo
        #3

        @asanka424 Thank you very much, but sorry I just laughed out... I guess you mean $$$PWD rather than $PWD, I did use $$$PWD, just because the display of this post, it displayed my $$$ to $$. and I did add \\ at each end of lines.

        A 1 Reply Last reply
        0
        • jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          What do you actually mean if you say "qt does not try to find a 3rd party lib"?
          Is it not passed to the linker? Can you check in the compiler output whether it is?
          Does this library have the same architecture (32bit vs. 64bit)?

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

          ohuohuoO 1 Reply Last reply
          0
          • ohuohuoO ohuohuo

            @asanka424 Thank you very much, but sorry I just laughed out... I guess you mean $$$PWD rather than $PWD, I did use $$$PWD, just because the display of this post, it displayed my $$$ to $$. and I did add \\ at each end of lines.

            A Offline
            A Offline
            asanka424
            wrote on last edited by
            #5

            @ohuohuo Yes. I didn't know that happened. Are you one Mac, I think in mac you have to include your framework. I will check and let you know. (don't have a Mac right now)

            ohuohuoO 1 Reply Last reply
            0
            • K Offline
              K Offline
              kenchan
              wrote on last edited by
              #6

              Don't you need something like
              LIBS += -Lpathtomylib
              to pass library paths to the linker?

              ohuohuoO 1 Reply Last reply
              0
              • ohuohuoO ohuohuo

                I put four 3rd party .so files in total in same folder. And qt can find 3 of them, except only one: libMPCtrl.so

                Below is part of my pro file: (notice that I just put three .so files to LIBS but interestingly, qt find another one automatically.) How can I make qt find the libMPCtrl.so ?

                unix{
                LIBS += -L$$PWD/lib -lhcnetsdk
                -lPlayCtrl
                -lMPCtrl
                }

                INCLUDEPATH += $$PWD/include/
                $$PWD/Configuration/Public/
                $$PWD/lib/

                (It doesn't matter whether I use . or $$PWD, same result.)

                I mean, actually instead of "cannot find it", qt even didn't TRY to find it. According to strace tool, qt never tried to open() this .so file.

                K Offline
                K Offline
                KeithS
                wrote on last edited by
                #7

                @ohuohuo

                Take a look at the Makefile that qmake creates. Is the missing shared lib in it? If not, then there is something wrong with your .pro file.

                Also check the date modified of the Makefile in case for some reason it's not getting updated.

                ohuohuoO 1 Reply Last reply
                0
                • jsulmJ jsulm

                  What do you actually mean if you say "qt does not try to find a 3rd party lib"?
                  Is it not passed to the linker? Can you check in the compiler output whether it is?
                  Does this library have the same architecture (32bit vs. 64bit)?

                  ohuohuoO Offline
                  ohuohuoO Offline
                  ohuohuo
                  wrote on last edited by
                  #8

                  @jsulm So "qt does not try to find a 3rd party lib"? means , when I use strace tool in ubuntu12.04, I checked all the open() calls the system made, I didn't find any open() call to libMPCtrl.so file. If it was not passed to the linker, how the other libs were been found? they are in the same folder path, and in the same pro file. I just don't understand

                  1 Reply Last reply
                  0
                  • A asanka424

                    @ohuohuo Yes. I didn't know that happened. Are you one Mac, I think in mac you have to include your framework. I will check and let you know. (don't have a Mac right now)

                    ohuohuoO Offline
                    ohuohuoO Offline
                    ohuohuo
                    wrote on last edited by
                    #9

                    @asanka424 No, i'm using ubuntu12.04, 32bit

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      asanka424
                      wrote on last edited by
                      #10

                      Can you post compile error you get?

                      ohuohuoO 1 Reply Last reply
                      0
                      • A asanka424

                        Can you post compile error you get?

                        ohuohuoO Offline
                        ohuohuoO Offline
                        ohuohuo
                        wrote on last edited by
                        #11

                        @asanka424 well, there's no compile error... I guess it's a runtime problem

                        1 Reply Last reply
                        0
                        • K KeithS

                          @ohuohuo

                          Take a look at the Makefile that qmake creates. Is the missing shared lib in it? If not, then there is something wrong with your .pro file.

                          Also check the date modified of the Makefile in case for some reason it's not getting updated.

                          ohuohuoO Offline
                          ohuohuoO Offline
                          ohuohuo
                          wrote on last edited by ohuohuo
                          #12

                          @KeithS Thanks. I checked out the makefile, it seems nothing wrong. Any ideas?
                          CC = gcc
                          CXX = g++
                          DEFINES = -DQT_WEBKIT -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
                          CFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES)
                          CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES)
                          INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I../RemoteClient -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I../RemoteClient/include -I../RemoteClient/Configuration/Public -I../RemoteClient/lib -I../RemoteClient -I/usr/X11R6/include -I. -I. -I../RemoteClient -I.
                          LINK = g++
                          LFLAGS =
                          LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -L/usr/X11R6/lib -L./lib/ -Wl,-rpath=./lib/,-rpath=./ -lhcnetsdk -lPlayCtrl -lMPCtrl -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread
                          AR = ar cqs
                          RANLIB =
                          QMAKE = /usr/bin/qmake-qt4
                          TAR = tar -cf
                          COMPRESS = gzip -9f
                          COPY = cp -f
                          SED = sed
                          COPY_FILE = $(COPY)
                          COPY_DIR = $(COPY) -r
                          STRIP = strip
                          INSTALL_FILE = install -m 644 -p
                          INSTALL_DIR = $(COPY_DIR)
                          INSTALL_PROGRAM = install -m 755 -p
                          DEL_FILE = rm -f
                          SYMLINK = ln -f -s
                          DEL_DIR = rmdir
                          MOVE = mv -f
                          CHK_DIR_EXISTS= test -d
                          MKDIR = mkdir -p

                          1 Reply Last reply
                          0
                          • K kenchan

                            Don't you need something like
                            LIBS += -Lpathtomylib
                            to pass library paths to the linker?

                            ohuohuoO Offline
                            ohuohuoO Offline
                            ohuohuo
                            wrote on last edited by
                            #13

                            @kenchan I changed it to
                            unix{
                            LIBS += -L./lib/ -Wl,-rpath=./lib/,-rpath=./ -lhcnetsdk -lPlayCtrl -lMPCtrl
                            }
                            still cannot find it. any ideas?

                            1 Reply Last reply
                            0
                            • K Offline
                              K Offline
                              kenchan
                              wrote on last edited by kenchan
                              #14

                              not really... on MAC OS X I generally put my -LIBS += -Lsomepath and my LIBS += -lsomelib on separate lines. That is just to make it easier to change though.
                              I do find that the link order is important for some libraries on UNIX boxes (like Mac OS X).
                              Are you using a Mac or something else?
                              I might be useful to see what you get in the compile output window.

                              ohuohuoO 1 Reply Last reply
                              0
                              • K kenchan

                                not really... on MAC OS X I generally put my -LIBS += -Lsomepath and my LIBS += -lsomelib on separate lines. That is just to make it easier to change though.
                                I do find that the link order is important for some libraries on UNIX boxes (like Mac OS X).
                                Are you using a Mac or something else?
                                I might be useful to see what you get in the compile output window.

                                ohuohuoO Offline
                                ohuohuoO Offline
                                ohuohuo
                                wrote on last edited by ohuohuo
                                #15

                                @kenchan no, it's on Ubuntu12.04 32bit. The compile output is:

                                23:39:32: Running build steps for project RemoteClient...
                                23:39:32: Configuration unchanged, skipping qmake step.
                                23:39:32: Starting: "/usr/bin/make" -w
                                make: Entering directory /home/.../QtWorkspace/RemoteClient-build-desktop-Qt_4_8_1_in_PATH__System__Debug' make: Nothing to be done for first'.
                                make: Leaving directory `/home/.../QtWorkspace/RemoteClient-build-desktop-Qt_4_8_1_in_PATH__System__Debug'
                                23:39:32: The process "/usr/bin/make" exited normally.

                                1 Reply Last reply
                                0
                                • K Offline
                                  K Offline
                                  kenchan
                                  wrote on last edited by
                                  #16

                                  hmm not very useful since you are not rebuilding...
                                  now what does it look like when you do this...
                                  clean
                                  run qmake
                                  build or rebuild just to be sure :-)

                                  ohuohuoO 2 Replies Last reply
                                  0
                                  • K kenchan

                                    hmm not very useful since you are not rebuilding...
                                    now what does it look like when you do this...
                                    clean
                                    run qmake
                                    build or rebuild just to be sure :-)

                                    ohuohuoO Offline
                                    ohuohuoO Offline
                                    ohuohuo
                                    wrote on last edited by ohuohuo
                                    #17

                                    @kenchan yeah, I rebuilt that , but it's large file which part you think would be most interesting?
                                    output of just ran qmake:
                                    00:01:05: Running build steps for project RemoteClient...
                                    00:01:05: Starting: "/usr/bin/qmake-qt4" /home/.../QtWorkspace/RemoteClient/RemoteClient.pro -r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug
                                    00:01:05: The process "/usr/bin/qmake-qt4" exited normally.

                                    K 1 Reply Last reply
                                    0
                                    • K kenchan

                                      hmm not very useful since you are not rebuilding...
                                      now what does it look like when you do this...
                                      clean
                                      run qmake
                                      build or rebuild just to be sure :-)

                                      ohuohuoO Offline
                                      ohuohuoO Offline
                                      ohuohuo
                                      wrote on last edited by
                                      #18

                                      @kenchan I looked at the output of ldd, it seems that this program does not depend on libMPCtrl.so and libPlayCtrl.so files. And after I changed to unix{
                                      LIBS += -L./lib/ -Wl,-rpath=./lib/,-rpath=./ -lhcnetsdk -lPlayCtrl -lMPCtrl
                                      }, I can neither find libMPCtrl.so nor libPlayCtrl.so.

                                      K 1 Reply Last reply
                                      0
                                      • ohuohuoO ohuohuo

                                        @kenchan yeah, I rebuilt that , but it's large file which part you think would be most interesting?
                                        output of just ran qmake:
                                        00:01:05: Running build steps for project RemoteClient...
                                        00:01:05: Starting: "/usr/bin/qmake-qt4" /home/.../QtWorkspace/RemoteClient/RemoteClient.pro -r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug
                                        00:01:05: The process "/usr/bin/qmake-qt4" exited normally.

                                        K Offline
                                        K Offline
                                        kenchan
                                        wrote on last edited by
                                        #19

                                        @ohuohuo good point, i guess you mean it is a large project with many source files?
                                        OK how about cutting a bit that shows the last couple of compiled modules and then the linker stuff up to the end, or is that still too much?

                                        1 Reply Last reply
                                        0
                                        • K Offline
                                          K Offline
                                          kenchan
                                          wrote on last edited by
                                          #20

                                          so if you don't link to them it will not run, is that the problem?

                                          ohuohuoO 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