python-nss、Mozilla NSS library用のPythonインターフェイス、Mac OS 10.6.5を実行している64ビットMacで、Mac OS X 10.6以降で動作するPythonソフトウェアで使用するために構築しようとしています。特定のオプションを使用してNSS自体を正常にビルドすることはできますが、python-nssビルドではいくつかの警告が表示され、Pythonモジュールは使用できません。python-nssとNSS for Mac OS Xをビルドするにはどうすればよいですか?
NSSをビルドするには、these instructionsに従いますが、これを使用するのは、で、cvsのチェックアウトではありません。私はちょうどmake nss_build_all
を実行すると、私はエラーが発生します。
mozilla/security/nss/lib/freebl/drbg.c
の516)で行が特定の型が期待される大きさであるという主張である
[email protected] ~/Installs/nss-3.12.9/mozilla/security/nss
$ make nss_build_all
...
drbg.c: In function ‘RNG_RandomUpdate’:
drbg.c:516: error: size of array ‘arg’ is negative
make[3]: *** [Darwin10.5.0_DBG.OBJ/Darwin_SINGLE_SHLIB/drbg.o] Error 1
make[2]: *** [libs] Error 2
make[1]: *** [libs] Error 2
make: *** [libs] Error 2
:
PR_STATIC_ASSERT(sizeof(size_t) <= 4);
Iの場合上記の手順のページにも関わらず、8のようですので、おそらく64ビット版が構築されている簡単なテストプログラム、はsizeof(size_t型)を記述します。
のgccを追加On Unix platforms, except Alpha/OSF1, if you want a build for the system's 64-bit ABI, set USE_64=1 in your environment. By default, NSS builds for the 32-bit environment on all platforms except Alpha/OSF1.
オプション-arch i386
(のために提案は)助けにはならないが、USE_64環境変数を持つ建物は成功している(64ビットのビルドが、私は必要なものではないかもしれないが):
[email protected] ~/Installs/nss-3.12.9/mozilla/security/nss
$ USE_64=1 make nss_build_all
これは大丈夫かもしれないが、私がpython-nss(this sourceを使用して)をビルドしようとすると、問題が発生します。
作成したばかりのNSSライブラリを含めるには、python-nssのsetup.py
にいくつかの変更が必要です。
DIST_ROOT = '/Users/ncraike/Installs/nss-3.12.9/mozilla/dist/'
INCLUDE_DIRS = [DIST_ROOT+'Darwin10.5.0_64_DBG.OBJ/include', DIST_ROOT+'public/nss/', DIST_ROOT+'private/nss/']
LIB_DIRS = [DIST_ROOT+'Darwin10.5.0_64_DBG.OBJ/lib/']
...と、各拡張子を変更:これらの行を追加することにより、
nss_nss_extension = \
Extension('nss.nss',
sources = ['src/py_nss.c'],
include_dirs = ['src', '/usr/include/nss3', '/usr/include/nspr4'],
libraries = ['nspr4', 'ssl3', 'nss3'],
extra_compile_args = extra_compile_args,
)
だから私は、変更した拡張宣言:元setup.py
ハードコードがインクルードは、例えば、各拡張のためのディレクトリを含めますINCLUDE_DIRSリストを追加し、library_dirs
引数を含める(distutils documentationで説明)。
nss_nss_extension = \
Extension('nss.nss',
sources = ['src/py_nss.c'],
include_dirs = ['src'] + INCLUDE_DIRS,
libraries = ['nspr4', 'ssl3', 'nss3'],
library_dirs = LIB_DIRS,
extra_compile_args = extra_compile_args,
)
これらの変更後
、python setup.py build
実行され、NSSライブラリに注意するようだが、など、いくつかの警告、生成します:
src/py_nss.c:12640: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘Py_ssize_t’
gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch i386 -arch ppc -arch x86_64 build/temp.macosx-10.6-universal-2.6/src/py_nss.o -L/Users/ncraike/Installs/nss-3.12.9/mozilla/dist/Darwin10.5.0_64_DBG.OBJ/lib/ -lnspr4 -lssl3 -lnss3 -o build/lib.macosx-10.6-universal-2.6/nss/nss.so
ld: warning: in build/temp.macosx-10.6-universal-2.6/src/py_nss.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Users/ncraike/Installs/nss-3.12.9/mozilla/dist/Darwin10.5.0_64_DBG.OBJ/lib//libnspr4.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Users/ncraike/Installs/nss-3.12.9/mozilla/dist/Darwin10.5.0_64_DBG.OBJ/lib//libssl3.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
「ファイルがあり、サポートされていないファイル形式のために建てられたの例アーキテクチャがリンクされていないことが最も一般的な警告です。このエラーはa post on another siteに記載されており、gccで-arch i386
オプションを使用する可能性があります。このオプション(NSSまたはpython-nss?)を追加するビルドプロセスのどの段階で、私がpython distutilsビルドスクリプトにどのように追加するかはわかりません。
ビルドは完了しませんが、結果のpythonモジュールが使用可能ないないようです:
[email protected] ~/Installs/python-nss-0.10/build/lib.macosx-10.6-universal-2.6
$ ls
nss
[email protected] ~/Installs/python-nss-0.10/build/lib.macosx-10.6-universal-2.6
$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import nss.nss
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(nss/nss.so, 2): Library not loaded: @executable_path/libssl3.dylib
Referenced from: /Users/ncraike/Installs/python-nss-0.10/build/lib.macosx-10.6-universal-2.6/nss/nss.so
Reason: image not found
は私のエラーは、私はNSSを構築していますどのようにあるか、どのように私のpython-NSS構築していますか? python-nssビルドスクリプトがMac OS X NSSライブラリと正しくリンクするようにするにはどうすればよいですか?私はCの経験よりもはるかに多くのPythonの経験があるので、私はいくつかの単純な建物のエラーを作った場合、私は驚くことはありません。
Mac OS 10.6.5を実行していて、Xcode 3.2.4(64ビット)がインストールされています。 gcc -v
は、gcc version 4.2.1 (Apple Inc. build 5664)
およびTarget: i686-apple-darwin10
となる。
ありがとうございました。