libtool python模块链接和安装

时间:2011-02-10 16:17:35

标签: python autotools distutils libtool

我使用autotools处理用C编写的项目,该项目生成一个静态库。我还在同一个项目的上下文中为C API提供了一个Python接口。直到最近我才获得了在项目中引入libtool的权限,以便能够以便携方式提供静态和动态库。到目前为止,我使用distutils生成Python共享模块,并将python模块链接到项目的C静态库。再次,那是因为我不允许将libtool /共享库引入到ecuation中。现在我想把libtool放进去,我面临以下两个有问题的场景:

  1. 如果我继续使用distutils生成Python共享模块,因为distutils和autotools不会互相交谈,我需要告诉distutils链接到哪个C库。到目前为止,我无法想到任何方法,但解析.la文件以获取库libtool能够生成的库的名称和路径。 libtool是否提供有关它能够在系统上生成什么类型​​的库的任何信息?

  2. 如果我将Python模块生产移动到automake,那很好,直到我到达安装过程。我不知道如何告诉libtool我想要我的Python模块除了lib文件夹之外的其他地方,即'lib / python2.5 / site-packages / myproject'。我试过了 只是复制Makefile中的库,但由于库有错误的rpath(构建而不是安装),因此无法正常工作。我为什么要那里?因为那里我也有.py包装器。那么,有没有办法告诉libtool在其他地方安装我的模块并正确设置rpath?

  3. 我想我只是在寻找一个优雅的解决方案,或者解决方案就在那里而且很简单,但我看不到它,因为我没有足够的经验。有什么帮助吗?

    P.S。如果我可以使它工作,则更喜欢选项2,因为这样我就不必将信息从autotools传递给distutils。

1 个答案:

答案 0 :(得分:3)

您是否阅读过http://www.gnu.org/software/hello/manual/automake/Python.html?我无法判断您是否要使用pyexecdir作为安装模块的位置。如果是,请将AM_PATH_PYTHON添加到configure.ac

无论如何,在automake中,_PRIMARY之前的名称指定了要安装内容的位置:lib_LTLIBRARIES将在$(libdir)安装库,pyexec_LTLIBRARIES将安装到{ {1}},$(pyexecdir)将安装到bin_PROGRAMS,依此类推。