2016-12-19 14 views
0

Моя проблема заключается в следующем. Я работаю над Ubuntu и имею cython код, который я компилирую с помощью следующих действий:Python: Недопустимый заголовок ELF, импортирующий библиотеку скомпилированных cython

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

Что 'File' говорят о типе сгенерированного' .so' файл? Могут ли инструменты binutils, такие как 'nm', проанализировать его успешно? Что * точно * является вашей локальной платформой (архитектура и ОС)? Нам действительно нужно больше деталей, чтобы диагностировать это - полные шаги по воспроизведению, в идеале. –

ответ

1

I'm working on Ubuntu

Это довольно бессмысленное заявление. Вероятно, вы используете Ubuntu в системе x86_64.

Если это так, ваша проблема, скорее всего, связана с 32-разрядным и 64-разрядным несоответствиями: вы пытаетесь импортировать 32-разрядный cython_accelerate.so в 64-разрядный процесс Python или наоборот.

Чтобы проверить это является причиной, запустите

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, не разделенный –

 Смежные вопросы

  • Нет связанных вопросов^_^