我正在使用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中设置一些东西(比如路径变量)以便使用它?
答案 0 :(得分:0)
你做不到。该库需要glibc 2.14或更高版本才能在其加载过程中出现,但该过程已在启动期间加载了glibc 2.12。无法同时加载两个版本的glibc。
您的选择是:
根据系统的libc重建库。
使用兼容版本的glibc将系统升级到操作系统版本。
使用LD_LIBRARY_PATH=…
启动Python以强制它使用较新版本的glibc。 (除非没有其他选择,否则应避免这样做;它可能会产生意想不到的影响。)