2016-12-19 17 views
0

私の問題は次のとおりです。私はUbuntuに取り組んで、私は、以下のものを使用してコンパイルcythonコード持っている:Python:Cythonコンパイル済みライブラリをインポートするELFヘッダが無効です

from distutils.core import setup 
from Cython.Build import cythonize 
import numpy 

setup(
    ext_modules = cythonize("cython_accelerate.pyx"), 
    include_dirs = [numpy.get_include()] 
) 

コンパイルが正常に動作します。私は、生成されたライブラリ(cython_accelerate.so)をインポートしようとすると、私は次のエラーを取得する:

invalid ELF header.

私は、Macのすべてのものの上に、まったく同じ手順を行う場合は完璧に動作します:唯一の違いは、ライブラリがで生成されていることです異なる名前(cython_accelerate.cpython-35m-darwin.so)ですが、インポートは問題なく期待通りに機能します。

私は間違っていますか?

+0

を実行しますか? 'nm'のようなbinutilsツールはそれをうまく解析できますか?あなたのローカルプラットフォーム(アーキテクチャとOS)は*正確に*何ですか?これを診断するには、実際に再現するための詳細なステップが理想的です。 –

答えて

1

I'm working on Ubuntu

これは意味がありません。おそらくx86_64システムでUbuntuを使用しています。

もしそうなら、問題は32ビットと64ビットのミスマッチが原因である可能性があります。つまり、32ビットのcython_accelerate.soを64ビットのPythonプロセスにインポートしようとしているか、またはその逆です。

これが原因であることを確認するには、 `生成` .so`ファイルの種類について何を言ってfile`ん

file `which python` 
file /path/to/cython_accelerate.so 
+0

コメントありがとうございました。 ファイル 'which python' - >/usr/bin/python:' python2.7 'へのシンボリックリンク ファイルcython_accelerate.so - > ELF 64ビットLSB共有オブジェクト、x86-64、バージョン1 (SYSV)、動的にリンク、BuildID [sha1] = 4b36e56da7adbc0cda2411aa72d146f4fc7e9864、削除されていません –

関連する問題