linux dladdr()函数为什么不能获取绝对路径
时间: 2024-06-06 10:05:53 浏览: 152
获取程序本身的绝对路径
3星 · 编辑精心推荐
Linux中的`dladdr()`函数可以获取某个共享库中符号的地址,但无法获取该共享库的绝对路径。这是因为共享库的加载方式和路径不是由`dladdr()`函数控制的。共享库可以通过多种方式被加载,例如通过`LD_LIBRARY_PATH`环境变量指定路径、通过`/etc/ld.so.conf`配置文件指定路径、通过动态链接器缓存(`/etc/ld.so.cache`)等。由于共享库加载的路径和方式不唯一,所以`dladdr()`函数无法保证获取正确的绝对路径。
如果需要获取共享库的绝对路径,可以通过其他方法实现,例如通过`/proc/self/maps`文件查找相应的共享库映射地址,并通过`readlink()`函数获取该映射地址对应的文件路径。
阅读全文