我正在一个使用autotools编写的C项目上工作,它生成一个静态库。同时,在同一项目的上下文中,我还提供了Python接口来访问C API。直到最近,我没有获得引入libtool以便能够以可移植的方式提供静态和动态库的权限。因此,我使用distutils生成Python共享模块,并将Python模块链接到项目的C静态库中。这是因为我不被允许引入libtool/共享库。现在我想引入libtool,但面临以下两个问题:
P.S.如果我能使其正常工作,我更喜欢选项2,因为这样我就不必从autotools传递信息到distutils。
- 如果我继续使用distutils生成Python共享模块,由于distutils和autotools无法相互通信,我需要告诉distutils要链接哪个C库。到目前为止,我想不出任何方法来做到这一点,除了解析.la文件以获取libtool能够生成的库的名称和路径。libtool是否提供有关其在系统上生成的库类型的任何信息?
- 如果我将Python模块生产移至automake,则可以正常运行,直到安装过程。我不知道如何告诉libtool我想要我的Python模块放在除lib文件夹之外的其他地方,即“lib/python2.5/site-packages/myproject”。我尝试在Makefile中仅复制库,但由于库具有错误的rpath(构建而不是安装的rpath),因此无法正常工作。为什么我想要它在那里?因为我还有.py包装器。因此,是否有任何方法告诉libtool将我的模块安装到其他位置并正确设置rpath?
P.S.如果我能使其正常工作,我更喜欢选项2,因为这样我就不必从autotools传递信息到distutils。