3

solaris 10 で gcc (v4.7) を使用して msgpack-python python モジュールをコンパイルしようとしています。インストールされている python は 2.6.8 です。Distutils は、コマンドから削除したい間違ったコンパイラ オプション (-xcode=pic32) を自動的に選択します。

distutils がまとめている完全なコマンドは次のとおりです。

/opt/csw/bin/gcc-4.7 -DNDEBUG -O -O2 -pipe -mcpu=v9 -I/opt/csw/include -xcode=pic32 -I/opt/csw/include/python2.6 -c msgpack/_msgpack.c -o build/temp.solaris-2.10-sun4v-2.6/msgpack/_msgpack.o

しかし、このエラーが発生します:

gcc-4.7: エラー: 言語コード=pic32 が認識されません

その後失敗します。その -xcode=pic32 オプションを削除し、上記のコマンドを手動で実行すると、モジュールは正常にコンパイルされます。

ただし、自動化された方法でこれを実行できる必要があります (ビルドファームを使用してパッケージを生成します)。問題は、現在のpythonまたはdistutilsを変更または変更せずに、distutilsが選択しているこのオプションを「削除」する方法があるので、python setup.pyプロセスにモジュールを適切に構築させることができるかということです(つまり、pic32オプションなし) )?

ありがとう

4

2 に答える 2

1

その gcc でコンパイルしないでください。-xcode=pic32Sun Studio コンパイラのコマンド行パラメータです。コンパイルに問題がなくても、リンクの問題が発生します。そのようなパラメータを理解できるSUN CoolTools でコンパイルするか、 Oracle Solaris Studio for SPARC を使用します。gcc

いくつかのヒント:

  1. GCC は SPARC に対して非常に遅いコードを生成します。これが、SUN が Cool Tools を作成した理由です。
  2. gcc-4.7 を主張する場合は、を削除する必要はありませんが-xcode=pic32、 を変更する必要があります。-m32 -fpic
  3. OSS ツールの成熟したセットアップを取得するために、Studio Express で特定の CPU にコンパイルするpkgsrc-xtarget=nativeを使用しています ( )
于 2012-07-14T21:49:36.900 に答える
0

次の環境変数を設定することで運を見つけることもできます。

export CC=$gcc_dir_path  # Example: /usr/bin/gcc
export CXX=$gxx_dir_path  # Example: /usr/bin/g++
export CFLAGS=''
export CPPFLAGS=''
export CXXFLAGS=''
export LDFLAGS=''

注: unset env var と set-as-empty env var には違いがあります。*FLAGS環境変数が設定されていないときに、Python パッケージでビルド バグが発生しました。gcc(オプションで呼び出す-xO2のが原因でした。)空に設定するとうまくいきました。

于 2015-04-17T07:38:43.713 に答える