Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to build Qt 5 statically

Tags:

c++

linux

gcc

qt

qt5

I worked with Qt Creator 2.6.2 based on Qt 5.0.1 in a linux environnement. The application works fine on the computer where I made the compilation but when I execute it on another computer I got errors like :

error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory
error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory

I found some solutions in this link (some links are dead).

So I added to my .pro file this line :

CONFIG += static

To compile my project statically.

I thought the file I'll get will be larger but I got the same size and the same errors.

Thank you.

like image 731
Mils Avatar asked Mar 11 '13 14:03

Mils


1 Answers

The Qt shared libraries don't exist on the other computer you tested it on. So you need to either:

  1. Copy the shared libraries to your other machine. Or...
  2. Create a static Qt build to link with your application.

It's not sufficient to just add CONFIG += static to your .pro file, you also need Qt static libraries. So to do #2 you'll need to get the Qt source code and build it yourself.

Also, Qt is licensed under the LGPL so you'll need to be aware of that when static linking. There are some who believe that the LGPL does not allow static linking (unless you LGPL your own code) and others who believe that it does (so long as you're willing to release the object code for your app). But that's a whole other discussion.

like image 160
Cutterpillow Avatar answered Sep 29 '22 20:09

Cutterpillow