简单整理一下,备忘;只关注Linux和Windows,其他情况不了解。dbzhang800 20110617
Windows下动态的库的搜索顺序,MSDN Dynamic-Link Library Search Order 中有详细的介绍。我们此处只关注比较正统的搜索顺序:
Windows的系统目录 (该目录可通过GetSystemDirectory得到)
Windows 目录 (该目录可通过GetWindowsDirectory得到)
注:工作目录位于Windows目录之后,这一改变始于 Windows Xp SP2.
注意:本部分内容不完全,如果你确实对此感兴趣,请考虑移步:http://blog.csdn.net/dbzhang800/article/details/6918413
动态库常规的搜索路径:
文件 /etc/ld.so.cache列出的库(使用工具ldconfig维护)
目录 /lib
目录 /usr/lib
注:RPATH似乎是很有争议的一个东西RpathIssue
尽管有争议,我们还是可以想windows下一样,让程序从它所在的路径下加载动态库。
直接调用编译器,使用 -Wl,-R,‘$ORIGIN‘
g++ hello.cpp -lmylib -Wl,-R,‘$ORIGIN‘ -o hello
编写makefile的话,使用 -Wl,-R,‘$$ORIGIN‘
all: g++ hello.cpp -lmylib -Wl,-R,‘$$ORIGIN‘ -o hello
unix:!mac:QMAKE_LFLAGS += -Wl,--rpath=///$/$ORIGIN
-R后跟路径和--rpath= 是等价的写法
http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx
http://blog.csdn.net/dbzhang800/article/details/6549777
原文:http://www.cnblogs.com/findumars/p/4995536.html