在生成了so文件之后,在编译的时候有两个选项制定了动态链接库的名字和路径:
-Ldir 指定动态链接库所在的路径dir
-lxxx 指定动态链接库的名字:libxxx.so
但是当编译完成之后,运行时仍然会报出找不到libxxx.so的出错消息;
-L和-I都是属于gcc或cc编译工具的选项,而当程序运行时,需要先从disk加载到进程空间中,所以也需要告诉加载器(比如ld)同样的路径消息,这是通过
-Wl,rpath=dir 来实现。
rpath是运行时路径的指示选项。
另外也可以通过另一个方式来实现,就是把dir加入到环境变量LD_LIBRARY_PATH中,比如在启动bash中:
LD_LIBRARY_PATH+=:dir
export LD_LIBRARY_PATH