我想使用-rpath链接器选项来设置.so搜索路径 . 我想要搜索 [app_path]/../lib . 我已经尝试将此添加到我的qmake .pro 文件中:
[app_path]/../lib
.pro
QMAKE_LFLAGS += -Wl,-rpath=$ORIGIN/../lib/
但是qmake以这种方式链接我的项目:
g++ -Wl,-rpath=RIGIN/../lib/ -Wl,-O1 -o myoutput main.o [...]
我怎么能逃脱 $ORIGIN ?
$ORIGIN
如果您希望在构建时(正确)评估 $ORIGIN ,只需将其添加到 .pro 文件:
QMAKE_RPATHDIR += $ORIGIN/../mylibs
我找到了here一种正确逃脱它的方法:
QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN/../mylibs\''
这是一个非常古老的问题,但对于通过搜索到达此处的人来说:不再需要旧答案中描述的方法 . 现代Qt版本(在我的情况下为5.9),允许您使用它:
QMAKE_RPATHDIR += lib
这将自动将所需的条目(包括 $ORIGIN 和 -Wl,-z,origin )添加到makefile中,只要您使用的是相对目录即可 . 这意味着 lib 将产生所需的"origin"条目,而 /lib 之类的东西则不会 . 您添加到 QMAKE_RPATHDIR 的任何相对目录都将自动相对于 $ORIGIN .
-Wl,-z,origin
lib
/lib
QMAKE_RPATHDIR
美元= $
QMAKE_LFLAGS = -Wl,-rpath = $$ $$ ORIGIN /../ myLibs
4 回答
如果您希望在构建时(正确)评估
$ORIGIN
,只需将其添加到.pro
文件:我找到了here一种正确逃脱它的方法:
这是一个非常古老的问题,但对于通过搜索到达此处的人来说:不再需要旧答案中描述的方法 . 现代Qt版本(在我的情况下为5.9),允许您使用它:
这将自动将所需的条目(包括
$ORIGIN
和-Wl,-z,origin
)添加到makefile中,只要您使用的是相对目录即可 . 这意味着lib
将产生所需的"origin"条目,而/lib
之类的东西则不会 . 您添加到QMAKE_RPATHDIR
的任何相对目录都将自动相对于$ORIGIN
.美元= $
QMAKE_LFLAGS = -Wl,-rpath = $$ $$ ORIGIN /../ myLibs