2

ここからMacでs-transformpythonラッパーをコンパイルしようとしています(Mountain Lion、Macportsからインストールされたgcc45、Enthought 64ビット経由でインストールされたPython)。

私はコンパイラの専門家ではなく科学のユーザーであり、Linuxマシンですぐに使用できますが(に変更されたばかりintですnpy_intpPyArray_FromDimsPyArray_SimpleNewMacbookでそこに到達する方法がわかりません...

だから私はこのMakefileを構築します:

PYINCDIR = /Library/Frameworks/EPD64.framework/Versions/Current/include/python2.7
NUMPYDIR = /Library/Frameworks/EPD64.framework/Versions/Current/lib/python2.7/site-packages/numpy/core/include/numpy CFLAGS = -O3 -I$(PYINCDIR) -I$(NUMPYDIR) -fPIC

all: sinemodule.so stmodule.so

sinemodule.so: sinemodule.o     $(CC) -shared -o $@ sinemodule.o

stmodule.so: stmodule.o st.o    $(CC) -shared -o $@ stmodule.o st.o
-lfftw3

そして「作る」ことを試みると、私は得ます:

cc -shared -o sinemodule.so sinemodule.o
Undefined symbols for architecture x86_64:
"_PyArg_ParseTuple", referenced from:
  _sine_taper_wrap in sinemodule.o
"_PyCObject_AsVoidPtr", referenced from:
  _initsine in sinemodule.o
"_PyCObject_Type", referenced from:
  _initsine in sinemodule.o
"_PyErr_Format", referenced from:
  _initsine in sinemodule.o
"_PyErr_Print", referenced from:
  _initsine in sinemodule.o
"_PyErr_SetString", referenced from:
  _initsine in sinemodule.o
"_PyExc_AttributeError", referenced from:
  _initsine in sinemodule.o
"_PyExc_ImportError", referenced from:
  _initsine in sinemodule.o
"_PyExc_RuntimeError", referenced from:
  _initsine in sinemodule.o
"_PyImport_ImportModule", referenced from:
  _initsine in sinemodule.o
"_PyObject_GetAttrString", referenced from:
  _initsine in sinemodule.o
"_Py_InitModule4_64", referenced from:
  _initsine in sinemodule.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sinemodule.so] Error 1

たぶんこれは非常に基本的なことですが、正直なところ、私はそれを修正するためにどこから読み始めればよいのかさえわかりません...

よろしくお願いします!

4

1 に答える 1

0

この放棄された投稿を見つけたので、解決策を共有したいと思いました。

まず第一に、あなたがしたように、あなたの python ディストリビューションの python と numpy include ディレクトリを見つける必要があります。

私の場合、Anaconda 1.9.1 を使用した場合、これは

PYINCDIR = /Users/dengemann/anaconda/include/python2.7/include
NUMPYDIR = /Users/dengemann/anaconda/lib/python2.7/site-packages/numpy/core/include/numpy/

次に、Makefile を直接呼び出すのではなく、最上位ディレクトリの setup.py が正しいことを確認してください。

私の場合、「darwin」は明示的にサポートされていなかったので、追加しました。

# linux first
if sys.platform in ['linux2', 'darwin']:
    include_dirs = [os.path.join(NUMPYDIR, r'include/numpy')]
    libraries=['fftw3']
    library_dirs=[] # assume we use default locations

これらの変更を実行python setup.py installした後、ジョブと出力は期待どおりに見えました。HTH、デニス

于 2014-04-20T12:27:33.343 に答える