Mac OS X上にライブラリが32ビット/ 64ビット内に構築されているかどうかを確認する方法

StackOverflow https://stackoverflow.com/questions/3207177

質問

PYQT / SIPの使用に問題があります。私はSIPが64ビットにまとめられていると思いますが、Pythonはそれを見つけることに問題があります。

  File "qtdemo.py", line 46, in 
    import sip
ImportError: dlopen(/Library/Python/2.6/site-packages/sip.so, 2): no suitable image found.  Did find:
        /Library/Python/2.6/site-packages/sip.so: mach-o, but wrong architecture
.

  • ライブラリ(SO / DYLIB)が32bitまたは64bitの場合はどうすればわかりますか?
  • Pythonが32bitまたは64bitの場合はどうやって知っていますか?
役に立ちましたか?

解決

fileツールを使用して実行可能ファイルを識別できます。

例:

> file /Applications/TextEdit.app/Contents/MacOS/TextEdit 
/Applications/TextEdit.app/Contents/MacOS/TextEdit: Mach-O universal binary with 2 architectures
/Applications/TextEdit.app/Contents/MacOS/TextEdit (for architecture x86_64):   Mach-O 64-bit executable x86_64
/Applications/TextEdit.app/Contents/MacOS/TextEdit (for architecture i386): Mach-O executable i386
.

他のヒント

使用しているPythonインスタンスで利用可能なアーキテクチャを見つけるには:

$ file "$( "$(which python)" -c "import sys;print(sys.executable)" )"
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc
.

Pythonが現在32ビットまたは64ビットを実行しているか64ビットのどちらを実行しているか(例):

$ /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffffffffffff
$ arch -x86_64 /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffffffffffff
$ arch -i386 /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffff
$ arch -ppc /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffff
.

Python3の場合、sys.maxsizeの代わりにsys.maxint

$ python3 -c "import sys;print('%x'%sys.maxsize)"
7fffffff
.

lipo -info target/libexample-df07142d9bfd950a.a
input file target/libexample-df07142d9bfd950a.a is not a fat file
Non-fat file: target/libexample-df07142d9bfd950a.a is architecture: x86_64
.

または

lipo -info `which python`
Non-fat file: /usr/local/bin/python is architecture: x86_64
.

fileを使用しないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top