【发布时间】:2015-05-27 07:32:25
【问题描述】:
我有一个 c++ .so 文件,所以我从 python 调用它。我想从 C++ 代码中获取 .so 文件自己的位置。我使用了 getcwd 和 readlink。他们返回了 python 代码运行目录。有人知道这个问题吗?请帮助我,谢谢。
P.s 我的 .so 文件位置是:/home/user/cpp/test.so
我的 python 代码位置是:/home/user/python/test.py
getcwd,readlink 的输出是:/home/user/python(我想得到“/home/user/cpp”)
【问题讨论】:
-
无法保证获取存储共享库的目录 - 最接近的方法是扫描 LD_LIBRARY_PATH 以获取名称,但请注意,如果您有多个体系结构,第一个您找到的可能不是您正在寻找的那个(例如 x86 而不是 x86-64,反之亦然)。为什么你认为你需要知道这一点?
-
还有一个真正的风险是你得到一个指向 .so 文件的符号链接,而不是一个硬链接。这可以接受吗?
标签: c++ linux shared-libraries