在Linux中添加动态库路径可以设置LD_LIBRARY_PATH路径。如添加/mylib
动态库路径:
export LD_LIBRARY_PATH=/mylib/:$LD_LIBRARY_PATH
除了上面方法外,我们还可以使用编译参数 -Wl,-rpath=<动态库路径>
。
-Wl
为gcc的参数,表示「编译器将后面的参数传递给链接器ld」。 -rpath
为在运行链接时,会优先搜索-rpath的路径。
QMAKE_LFLAGS为指定传递给链接器的一组常规标志。
QMAKE_LFLAGS += -Wl,-rpath=/mylib1
QMAKE_RPATHDIR为指定在链接时添加到可执行文件的库路径列表,以便在运行时优先搜索这些路径。
QMAKE_RPATHDIR += /mylib2
QT 中的一般用法:
QMAKE_RPATHDIR += @executable_path/../Frameworks/
QMAKE_RPATHDIR += @loader_path/../Frameworks/
QMAKE_LFLAGS += -framework IOKit
QMAKE_LFLAGS += -framework AppKit
QMAKE_LFLAGS += -framework AVFoundation
QMAKE_LFLAGS += -framework Foundation
QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN\''
QMAKE_LFLAGS-设置链接器flag参数,会修改Makefile的LFLAGS选项。该参数包含了传递给连接器的一组通用的标记。使用指定的QMAKE_LFLAGS的好处在于,能够根据当前编译的不同配置选择不同路径下的依赖库。
如: QMAKE_LFLAGS += -Wl,-rpath=./sqlite3,这样编译生成的可执行文件依赖的sqlite库就会是./sqlite3
$ORIGIN - 是一个特殊的变量,指示实际的可执行文件名。它在运行时解析到可执行文件的位置,在设置RPATH时非常有用。