共享对象文件的放置位置

Where Should Shared Object Files Be Placed?

本文关键字:置位 位置 对象 文件 共享      更新时间:2023-10-16

我正在冒险使用pybindgen为Python创建C/C++绑定。我按照"构建它(GCC 说明)"中概述的步骤为示例文件创建绑定:

http://packages.python.org/PyBindGen/tutorial.html#a-simple-example

运行make会生成一个 .so 文件。如果我了解 .so 文件的工作原理,我应该能够将共享对象中的类import到 Python 中。但是,我不确定将文件放在哪里以及如何让 Python 知道它在哪里。此外,原始 c/c++ 源文件是否需要随 .so 文件一起提供?

到目前为止,我已经尝试将文件放在/usr/local/lib 中,并将该路径添加到.bash_profile DYLD_LIBRARY_PATH。当我尝试从 Python 交互器中导入模块时,会抛出一个错误,指出找不到该模块。

所以,我的问题是:需要对生成的.so文件做什么才能被Python程序使用?

Python 在

搜索 python 模块的同一目录中查找.so模块。因此,您必须像安装普通python模块一样安装它,无论是默认情况下在python sys.path上的某个地方(/usr/share/python/site-lib或类似的东西 - 它将依赖于发行版),或者将目录添加到PYTHONPATH环境变量。

是python使用dlopen加载模块,而不是动态链接器,所以LD_LIBRARY_PATH(注意,没有DY)不会帮助你。

与所有其他 Python 模块相同。它必须位于 sys.path 中给出的位置之一内。