gpt4 book ai didi

python - 如何使用 ctypes 加载链接到非默认 libc 的库?

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:22 25 4
gpt4 key购买 nike

我正在使用 CentOS6.9,我正在使用 python3.6 从 .so 文件加载 c 库。但是,我遇到了以下错误:

OSError: /lib64/libc.so.6: version 'GLIBC_2.14' not found

我做了一些研究,发现这是因为 centOS 6 使用的是 2.12 版本。我按照这里的一篇帖子 ( https://stackoverflow.com/a/38317265/8406938 ) 在 centOS 6 中安装 GLIBC_2.14,现在可以成功运行外部应用程序,如果它们通过第一次运行链接到这个 libc:

export LD_LIBRARY_PATH=/opt/glibc-2.14

我的问题是在我安装它之后,我如何在 python 中使用它以便我可以通过 ctypes 加载库,这是我加载的代码:

filepath = os.path.dirname(os.path.join(os.path.realpath(__file__)))
lib = CDLL(os.path.join(filepath, 'lib.so'))

还是报错

OSError: /lib64/libc.so.6: version 'GLIBC_2.14' not found

安装 2.14 后。我需要在 python 中设置一些东西(比如路径变量)才能使用它吗?

最佳答案

你不能。该库要求 glibc 2.14 或更高版本存在于它正在加载的进程中,但该进程在启动期间已经加载了 glibc 2.12。无法同时加载两个版本的 glibc。

您的选择是:

  1. 根据您系统的 libc 重建库。

  2. 将您的系统升级到具有兼容 glibc 版本的操作系统版本。

  3. 使用 LD_LIBRARY_PATH=... 启动 Python,强制它使用较新版本的 glibc。 (除非别无选择,否则请避免这样做;它可能会产生意想不到的影响。)

关于python - 如何使用 ctypes 加载链接到非默认 libc 的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com