How to make binary distribution of Qt application for Linux

Michael picture Michael · Jun 1, 2009 · Viewed 14k times · Source

I am developing cross-platform Qt application. It is freeware though not open-source. Therefore I want to distribute it as a compiled binary.

On windows there is no problem, I pack my compiled exe along with MinGW's and Qt's DLLs and everything goes great.

But on Linux there is a problem because the user may have shared libraries in his/her system very different from mine.

Qt deployment guide suggests two methods: static linking and using shared libraries. The first produces huge executable and also require static versions of many libraries which Qt depends on, i.e. I'll have to rebuild all of them from scratches. The second method is based on reconfiguring dynamic linker right before the application startup and seems a bit tricky to me.

Can anyone share his/her experience in distributing Qt applications under Linux? What method should I use? What problems may I confront with? Are there any other methods to get this job done?

Answer

RazZziel picture RazZziel · Nov 20, 2012

Shared libraries is the way to go, but you can avoid using LD_LIBRARY_PATH (which involves running the application using a launcher shell script, etc) building your binary with the -rpath compiler flag, pointing to there you store your libraries.

For example, I store my libraries either next to my binary or in a directory called "mylib" next to my binary. To use this on my QMake file, I add this line in the .pro file:

QMAKE_LFLAGS += -Wl,-rpath,\\$\$ORIGIN/lib/:\\$\$ORIGIN/../mylib/

And I can run my binaries with my local libraries overriding any system library, and with no need for a launcher script.