2015-04-10 3 views
1

Я хочу отправить кому-то мое скомпилированное расширение fortran на Mac (скомпилировано с f2py и gfortran).какие файлы включать с скомпилированным расширением f2py на Mac

Проблема в том, что она не работает на других компьютерах Mac, если они также не устанавливают xcode (2 ГБ, yikes!) И gfortran. Поэтому, видимо, отсутствуют некоторые дополнительные файлы, когда я просто отправляю скомпилированное расширение.

Кто-нибудь знает, какие другие файлы включать или (лучше), как скомпилировать расширение fortran, не отправляя никаких дополнительных файлов?

Спасибо,

Марк

ответ

0

Ну, при компиляции модуля с f2py, она по существу создает динамическую библиотеку (.so), который использует системные библиотеки. Например, на моем компьютере, шаг сшивание,

gfortran [...] -lpython2.7 -lgfortran -o ./my_f2py_module.so 

Поэтому, если вы хотите, чтобы быть в состоянии выполнить полученный модуль f2py на другом компьютере (предполагается, что ту же архитектуру), libpython2.7.so и libgfortran.so должны быть доступны там.

Я не знаю много о OS/X развертывания, но я думаю, вы должны

  1. использовать компилятор настоящий по умолчанию на Mac (т.е. лязг), который должен работать с f2py. Или, альтернативно, установите gfortran на обе системы.
  2. убедитесь, что вы связаны с одной версии питона в обоих случаях

Кроме того, использование ldd ./my_f2py_module.so перечислить все библиотеки, которые она связана с. Если некоторые из них не могут быть найдены в текущей системе, вы также увидите ее с помощью этой команды.

+0

Спасибо за ответ. Любой способ статически связывать libpython2.7 и liggfortran при запуске f2py, чтобы мне не пришлось распространять их с файлом mky_f2py_module.so, который я создаю? Я нашел некоторое обсуждение об этом на разных сайтах, но не получил четкого указания о том, как это сделать. –