【问题标题】:How to get c++ own directory?如何获取 c++ 自己的目录?
【发布时间】: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


【解决方案1】:

通常,查找可执行文件的共享库依赖项及其路径的最简单/最有效的方法是使用"ldd" 命令。

如果您想以编程方式获取此信息,一种可能是dl_iterate_phdr

另一个是检查/proc/--pid--/maps:

http://www.unix.com/programming/34498-how-view-loaded-shared-libraries-running-processes-linux.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2012-11-09
    • 2020-08-02
    • 2010-10-03
    相关资源
    最近更新 更多