0

Mac (OS-X 10.6.8) に libsvm をインストールしようとしています。Libsvm は C++ に問題なくインストールされます (svm-train、svm-predict バイナリを問題なく使用できます)。指示に従って、 libsvm-3.12/python/ フォルダーに make と入力すると、次の出力が得られました

<i>
make -C .. lib
if [ "Darwin" = "Darwin" ]; then \
        SHARED_LIB_FLAG="-dynamiclib -W1,-install_name,libsvm.so.2"; \
    else \
        SHARED_LIB_FLAG="-shared -W1,-soname,libsvm.so.2"; \
    fi; \
    g++ ${SHARED_LIB_FLAG} svm.o -o libsvm.so.2
</i>

しかし、「import svmutil」を介してPythonで使用しようとすると、次のエラーが発生します

<i> 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "svmutil.py", line 3, in <module>
    from svm import *
  File "svm.py", line 19, in <module>
    '../libsvm.so.2'))
  File "/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(../libsvm.so.2, 6): no suitable image found.  Did find:
    ../libsvm.so.2: mach-o, but wrong architecture
</i>

このエラーを回避する方法がわかりません。g++ の -m64 および -arch x86_64 フラグを使用してコンパイルしようとしましたが (libsvm の "Make" プロセス中に)、引き続きこのエラーが発生します。誰かがこの問題を回避する方法を教えてもらえますか?

4

1 に答える 1

1

libsvmユニバーサル バイナリとしてビルドしてみてください。

make CFLAGS='-arch i386 -arch x86_64' CXXFLAGS='-arch i386 -arch x86_64' LDFLAGS='-arch i386 -arch x86_64'

または、適切なバージョンの Python を実行していることを確認してください (Python インタープリターのバナーを確認してください)。

于 2012-09-24T20:42:11.753 に答える