linux环境 dladdr获取到的是相对路径
时间: 2024-01-21 08:16:02 浏览: 143
linux中的相对路径的表示方法
5星 · 资源好评率100%
是的,`dladdr()` 函数获取的是共享库的相对路径,而不是绝对路径。如果你想要获取绝对路径,可以使用 `realpath()` 函数将相对路径转换为绝对路径,例如:
```c
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
int main() {
void *handle = dlopen("libtest.so", RTLD_NOW);
if (handle == NULL) {
printf("dlopen error: %s\n", dlerror());
return 1;
}
Dl_info info;
if (dladdr(handle, &info) == 0) {
printf("dladdr error: %s\n", dlerror());
return 1;
}
char *abs_path = realpath(info.dli_fname, NULL);
if (abs_path == NULL) {
printf("realpath error\n");
return 1;
}
printf("The absolute path of the shared library is %s\n", abs_path);
dlclose(handle);
return 0;
}
```
这段代码打印出来的结果会是类似于 `/home/user/libtest.so` 的绝对路径。
阅读全文