Hi,

On 22.02.2016 11:51, Nikos Chantziaras wrote:
That will not work. The rpath needs to be $ORIGIN. A string. Not a variable that is expanded.

Also, I used the wrong syntax before. Escaping this string is difficult since it contains an "$". This should work:

  QMAKE_LFLAGS=-Wl,-rpath,\'\$\$ORIGIN\'

If you use that one, you should find that your program keeps working even if you move the directory that contains it and the libraries to somewhere else. With your current method, the program will only work if the libraries are in "/home/igor/Qt/5.5/gcc_64", a hardcoded path.

Now I understand what are you talking about. You are right.

I found the next solution in QtCreator sources:

QMAKE_RPATHDIR += \$\$ORIGIN
QMAKE_RPATHDIR += \$\$ORIGIN/../lib
RPATH = $$join( QMAKE_RPATHDIR, ":" )

QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${RPATH}\'
QMAKE_RPATHDIR =

It works now.

Thank you.



On 22/02/16 10:31, Igor Mironchik wrote:
In my Makefile I have:

LFLAGS        = -Wl,-O1 -Wl,-rpath,/home/igor/Qt/5.5/gcc_64
-Wl,-rpath,${ORIGIN} -Wl,-rpath,/home/igor/Qt/5.5/gcc_64/lib


On 22.02.2016 10:26, Nikos Chantziaras wrote:
That doesn't do anything useful. It just uses an absolute path. If you
move the executable to a different directory, it stops working.

You can verify that by looking at the Makefile. For example, here, this:

  QMAKE_RPATHDIR += ${ORIGIN}

becomes:

  -Wl,-rpath,/home/realnc/projects/myapp/

Which is completely useless.

Do do what you want, you really need to pass the string "$ORIGIN" to
the linker:

  QMAKE_LFLAGS += -Wl,-rpath,\$\$ORIGIN

This results in:

  -Wl,-rpath,$ORIGIN

in the Makefile.


On 22/02/16 09:13, Igor Mironchik wrote:
Hi,

Got it:

QMAKE_RPATHDIR += ${ORIGIN}

On 22.02.2016 10:11, Nikos Chantziaras wrote:
On 22/02/16 08:55, Igor Mironchik wrote:
On 22.02.2016 09:22, Koehne Kai wrote:

You should rather utilize rpath, and set it e.g. to $ORIGIN

https://en.wikipedia.org/wiki/Rpath

Interesting, but "QMAKE_RPATHDIR += ." doesn't work. It require full
path to work correctly...

qmake doesn't support it. You have to do it by hand:

  QMAKE_LFLAGS += -Wl,-rpath,\$\$ORIGIN/libs

And then I put all libraries in the "lib" directory of the
execututable.

(And this is obviously linker and platform specific.)

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest



_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest



_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to