3

スタティック ライブラリを生成する autotools を使用して、C で記述されたプロジェクトに取り組んでいます。同じプロジェクトのコンテキストで、C API への Python インターフェイスも提供しています。移植可能な方法で静的ライブラリと動的ライブラリの両方を提供できるようにするために、最近までプロジェクトに libtool を導入する許可がありませんでした。これまでのところ、distutils を使用して Python 共有モジュールを作成し、Python モジュールをプロジェクトの C スタティック ライブラリにリンクしました。繰り返しますが、これは libtool/shared ライブラリを ecuation に導入することを許可されていないためです。libtool を入れたいので、次の 2 つの問題のあるシナリオに直面しています。

  1. distutils を使用して Python 共有モジュールを作成し続ける場合、distutils と autotools は相互に通信しないため、どの C ライブラリにリンクするかを distutils に伝える必要があります。これまでのところ、それを行う方法は考えられませんが、.la ファイルを解析して、libtool が生成できたライブラリの名前とパスを取得します。libtool は、システム上で作成できたライブラリのタイプに関する情報を提供しますか?

  2. Python モジュールの生成を automake に移行しても、インストール プロセスに到達するまでは問題ありません。libtool に、Python モジュールを別の場所に置きたいが、lib フォルダ、つまり「lib/python2.5/site-packages/myproject」を指定する方法がわかりません。ライブラリをMakefileにコピーしようとしましたが、ライブラリのrpathが間違っていたため(インストールではなくビルドのもの)、正しく機能しませんでした。なぜそこに欲しいのですか?.py ラッパーもあるからです。では、libtool にモジュールを別の場所にインストールして rpath を適切に設定するように指示する方法はありますか?

私はエレガントなソリューションを探しているだけだと思います。あるいは、ソリューションがそこにあり、それはシンプルですが、十分な経験がないため、それを見ることができません。助けはありますか?

PS オプション 2 を希望します。機能させることができれば、autotools から distutils に情報を渡す必要がないためです。

4

1 に答える 1

3

http://www.gnu.org/software/hello/manual/automake/Python.htmlを読みましたか? pyexecdirモジュールをインストールする場所として使用するかどうかはわかりません。その場合は、 に追加AM_PATH_PYTHONconfigure.acます。

いずれにせよ、automake では、 の前の名前_PRIMARYは何かをインストールする場所を指定します:lib_LTLIBRARIESライブラリをにインストールし$(libdir)、にインストールし、にインストールします。pyexec_LTLIBRARIES$(pyexecdir)bin_PROGRAMS$(bindir)

于 2011-02-11T01:49:09.103 に答える