2012-04-06 14 views
3

私は、ライブラリを使用するアプリケーションの中には、fewSOquestionsの助言を受けて、ライブラリを使用するアプリケーションの一部が唯一のものなので、32ビットと64ビットの両方のアーキテクチャでSciPyをコンパイルしようとしています。 、私は、このコマンドのいくつかのバージョンを試してみたPip/easy_install SciPyのインストールでARCHFLAGSを無視しますか?

sudo ARCHFLAGS="-arch i386 -arch x86_64" pip install scipy

:このコマンドは、約2ヶ月前に同様のビルドで私のために働いたが、今ではコンパイル共有ライブラリの一部のみx86_64版をターゲットにしているようですsudoの前に環境変数を設定してください.XXXインストールのOSXコマンドラインツールを使用し、official SciPy install instructionsに続くOSX付属のLLVMの代わりにclangを使用して、FFlagsに-m32 -m64を含めて、pipの代わりにeasy_installを設定します。別に、など、私はそれを動作させるように見えることはできません。奇妙なことに、.soの一部の者は、両方のアーキテクチャで構築しているが、一部ではありません:引数が動作するように見えるライブラリと、それらの両方に合格しているよう

dhcp-10-249-71-202:~ kastman$ file /Library/Python/2.7/site-packages/scipy/optimize/*.so 
/Library/Python/2.7/site-packages/scipy/optimize/_cobyla.so: Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/_lbfgsb.so: Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/_minpack.so: Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/_nnls.so:  Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/_slsqp.so: Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so: Mach-O universal binary with 2 architectures 
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture i386): Mach-O bundle i386 
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/minpack2.so: Mach-O 64-bit bundle x86_64 
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so: Mach-O universal binary with 2 architectures 
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture i386): Mach-O bundle i386 
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 

は、メイクログを見ると、それが見えますそうでない場合:

# Minpack doesn't build fat binaries 
/usr/local/bin/gfortran -Wall -Wall -undefined dynamic_lookup -bundle build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/scipy/optimize/minpack2/minpack2module.o build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/fortranobject.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcsrch.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcstep.o -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin11/4.6.2 -Lbuild/temp.macosx-10.7-intel-2.7 -lgfortran -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/minpack2.so 
building 'scipy.optimize._slsqp' extension 
compiling C sources 
C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe 

#... but moduleTNC does. 
llvm-gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/moduleTNC.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/tnc.o -Lbuild/temp.macosx-10.7-intel-2.7 -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/moduleTNC.so 
building 'scipy.optimize._cobyla' extension 
compiling C sources 
C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe 

私はgfortranコンパイラを使用している可能性はありますか?私はbrew install gfortranを使用しましたが、これはSciPyの文書によれば良いとされています。私は重要な行は、Cコンパイラ:clang行であると思うでしょう。これは、両方の-archを含むほぼ同じようです。

私が試した最後の最も詳細なビルドがした

sudo env ARCHFLAGS="-arch i386 -arch x86_64" ARCH="i386 x86_64" CC="clang" CXX="clang" FFLAGS="-ff2c -m32 -m64" pip install scipy

誰もがこれをさらに診断する方法についての提案を持っていますか?

(OSX 10.7、最近のMacBookPro、CLIツールからとXcodeのgccでコンパイル)ソースと、建物から引っ張る

答えて

3

は正しく脂肪バイナリを作成するために表示されます。私はこれがすでに修正されているバグか(scipy devのリストに何も表示されなかった)、pip/easy_installと関係があるのか​​どうかはわかりませんが、ここで私がうまく動作するようにしています:

git clone https://github.com/scipy/scipy.git; cd scipy 
export ARCHFLAGS='-arch i386 -arch x86_64' 
python setup.py config 
python setup.py build 
sudo python setup.py install 

特別CC環境変数ない、のgfortranがbrew install gfortranからだった、とgccはLLVM-GCCだったように、驚くほどに見えます。

関連する問題