在Linux系统中,.so
文件是动态链接库(Shared Object)的扩展名,用于存储共享代码,要在当前目录下查找并使用.so
文件,需要设置环境变量LD_LIBRARY_PATH
。
以下是详细步骤:
1、临时修改:
在终端中执行以下命令:
```bash
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH
```
这种方式仅对当前会话有效,关闭终端后失效。
2、永久修改当前用户:
在用户的~/.bash_profile
文件中添加以下内容:
```bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
```
保存并关闭文件,然后执行以下命令使更改立即生效:
```bash
. ~/.bash_profile
```
这样设置后,当前用户每次登录都会加载当前目录的.so
文件。
3、永久修改所有用户:
修改系统的/etc/profile
文件,在文件末尾添加以下内容:
```bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
```
这样设置后,所有用户都会优先加载当前目录的.so
文件。
4、在so库内获取自身路径:
可以使用以下C代码函数获取当前.so
库所在目录:
```c
#include <dlfcn.h>
#include <string.h>
#include <string>
char* GetModuleCurPath(char* sCurPath) {
std::string wdir;
Dl_info dl_info;
dladdr((void*)GetModuleCurPath, &dl_info);
std::string path = dl_info.dli_fname;
wdir = path.substr(0, path.find_last_of('/') + 1);
strcpy(sCurPath, wdir.c_str());
return sCurPath;
}
```
如果.so
库放在可执行程序同级目录或子目录下调用,则得到的路径是相对于可执行程序的绝对路径。
以上就是关于“linux so 当前目录”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/71476.html