4

.pyxスクリプトでcythonを使用して、Linuxで.soファイルを作成することができました。Pythonインタープリターでインポートを正常に実行することもできます。

私の質問は、cythonを使用せずにこの.soをエンドユーザーのマシンにインストールするにはどうすればよいですか?.pyx、.py、または.cファイルをエンドユーザーに配布したくありません。また、エンドユーザーにcythonなどをインストールして.soファイルを使用させたくありません

4

2 に答える 2

3

ldd.so の静的依存関係を確認するために使用できます。Ubuntu デスクトップで cython を使用してビルドした .so の依存関係は次のとおりです。

$ ldd iksolver.so 
linux-vdso.so.1 =>  (0x00007fffc07fe000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdcabc08000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdcab903000)
libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007fdcab3d3000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdcab00b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdcac068000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdcaadf4000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdcaabef000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fdcaa9ec000)
$

インストールされている他の多くのライブラリに依存していること、および python2.7 をインストールする必要があることがわかりますが、ここにあるものはすべてデフォルトの Ubuntu デプロイメントにインストールされています。Cython をインストールする必要はありません。

同じプロセッサ アーキテクチャと同じバージョンのオペレーティング システムが使用されていれば、.so を/usr/local/lib/python2.7/dist-packages目的のマシンにコピーして、インポートすることができます。

もちろん、importCython モジュールにステートメントがある場合は、それらのモジュールが宛先システムにも存在することを確認する必要があります。

于 2013-08-20T21:18:39.583 に答える