2015-02-13 2 views
1

Я пытаюсь связать CUTEst с python, используя ugly. Я пытался использовать f2py так:Как связать библиотеку .a с f2py?

f2py -c -m ugly \ 
/home/gabriel/Documentos/ugly/src/gen77/gen77_main.f \ 
/home/gabriel/Documentos/ugly/src/gen77/gen77.f \ 
ELFUN.f GROUP.f RANGE.f \ 
-L/home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double \ 
-lcutest 

где libcutes.a находится в /home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double. f2py не генерировал файл ugly.os и дал это сообщение:

/USR/бен/LD: /home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double/libcutest.a(usetup. o): no se puede usar la reubicación R_X86_64_32S contra `.rodata.str1.1 'cuando se hace un objeto compartido; recompile con -fPIC

С другой стороны, если я скомпилирую с gfortran, он работает.

ответ

0

Чтобы использовать код в объектном файле из Python, файл объекта должен быть скомпилирован для использования position independent code, чтобы компоновщик мог включить его как часть общего объекта. Ошибка говорит о том, что библиотека .rodata.str1.1 не была скомпилирована для использования независимого от позиции кода, поэтому она не может быть включена в общий объект. Вам необходимо перекомпилировать библиотеку, с которой вы связываетесь, и передать дополнительный флаг -fPIC в gcc/gfortran при компиляции.

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

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