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. [answered] static build my first project

[answered] static build my first project

Scheduled Pinned Locked Moved General and Desktop
6 Posts 2 Posters 2.5k Views
  • 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.
  • J Offline
    J Offline
    Jagahatshi
    wrote on last edited by
    #1

    Howdy! I'm trying to statically build my first project, so that it can run on another Linux (Ubuntu) computer.

    So far, I've followed the instructions from the following sites:

    • http://www.qtcentre.org/wiki/index.php?title=Building_static_Qt_on_Linux
    • http://qtnbeyond.blogspot.com/2011/03/statically-building-with-qt-creator-in.html

    Here's what I've done:

    downloaded a new copy of the tar.gz source code from here: http://qt-project.org/downloads

    unpacked the tar file in a new directory on my computer

    configure it via: ./configure -prefix /opt/path/name -static -nomake examples -nomake tools -release

    make -j 3

    make install

    Open QtCreator -> Tools -> Options -> Build & Run

    clicked "Add...", and added the new qmake file from my new Static Qt directory

    hit "OK"

    The next step: tell my program to change the qmake version in my program's Build Settings. Seems I need to change the "PATH" variable in QtCreator -> Projects -> Build Environment.

    Here is my original (unchanged) path:
    @
    /opt/Qt5.2.1/5.2.1/gcc_64/bin:/usr/bin:/opt/Qt5.2.1/5.2.1/gcc_64/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    @
    I changed both the folders that say "/opt/Qt5.2.1/5.2.1/gcc_64/bin", because that was where the old qmake was.

    Now, when I Rebuild my project, it does not use the new qmake. Here's what my compile output says:
    @
    13:49:24: Running steps for project testPlot2...
    13:49:24: Starting: "/usr/bin/make" clean
    rm -f moc_mainwindow.cpp moc_qcustomplot.cpp
    rm -f ui_mainwindow.h
    rm -f main.o mainwindow.o qcustomplot.o moc_mainwindow.o moc_qcustomplot.o
    rm -f *~ core *.core
    13:49:24: The process "/usr/bin/make" exited normally.
    13:49:24: Configuration unchanged, skipping qmake step.
    13:49:24: Starting: "/usr/bin/make"
    /opt/Qt5.2.1/5.2.1/gcc_64/bin/uic .....
    @
    Why does it skip the qmake step? How do I force it to qmake, thereby creating a new Makefile with my new static Qt files?

    Regards, Chris

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      You need to add that new Qt version to Qt Creator, then make a kit with it and finally use that kit with your project

      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
      0
      • J Offline
        J Offline
        Jagahatshi
        wrote on last edited by
        #3

        Awesome - that worked. Now my new executable is 16.5MB (previously it was 750kB) so that's a good sign.

        Unfortunately, I'm not all the way there yet. It seems I still have other dependencies with this new static build. Here is the error when I try to run on another computer:
        @
        ./testQtStatic: error while loading shared libraries: libxcb-render-util.so.0: cannot open shared object file: No such file or directory
        @
        Weird thing is, I don't have this file on my original computer anywhere (not in the static Qt, or in my "regular" dynamic Qt). So - how can the executable work on my original computer without this file? Is the file somehow hidden?

        I found this thread, it seems to explain similar details, but not my issue. http://qt-project.org/forums/viewthread/5080 Maybe I'm missing something :)

        Regards, Chris

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          libxcb is a system library used for the xcb platform plugin, you'll need to have it installed on your other computer in order to run the application

          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
          0
          • J Offline
            J Offline
            Jagahatshi
            wrote on last edited by
            #5

            Excellent. I forgot that I had done that on my original computer (I had copy-pasted the commands from a WikiHow page and didn't realize what it was doing).

            Now - I'm finally done with the errors. Here was the last hiccup:
            @
            QFontDatabase: Cannot find font directory /opt/Qt5.2.1/static_5.2.1/lib/fonts - is Qt installed correctly?
            Aborted (core dumped)
            @
            I've found some "information (your old thread)":https://qt-project.org/forums/viewthread/26779 which seems to say that it is necessary to "make install" the Static build.

            Since I did do the make install on my original computer, I knew this wasn't it.

            I came across "another thread (thread)":http://www.qtcentre.org/threads/56362-Qt5-prebuilt-Linux-64-bit-libraries-segfaults-with-quot-QFontDatabase-Cannot-find-font-d that states that this error goes away if you create the directory it wants. This works for me - seems to be a silly work-around, but I'm ok with that.

            Regards, Chris

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #6

              Indeed, you must install every build unless you are doing a developer build

              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
              0

              • Login

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