web-dev-qa-db-ja.com

pygraphvizのコンパイル:認識されないコマンドラインオプション '-mno-cygwin'

Windows 7で、pygraphvizをコンパイルしようとすると、

    python setup.py build -c mingw32

私は得る

C:\ MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-IC:\ Program Files(x86)\ Graphv iz 2.28\include\graphviz" -Ic:\ Python27\include -Ic:\ Python27\PC -c pygraphviz/g raphviz_wrap.c -o build\temp.win-AMD64-2.7\Release\pygraphviz\graphviz_wrap.o cc1.exe:エラー:認識されないコマンドラインオプション '-mno-cygwin'エラー:コマンド ' gcc 'が終了ステータス1で失敗しました

その「-mno-cygwin」はどこから来たのですか? pygraphviz-1.1ディレクトリを調べても、「no-cygwin」は発生していません。

17
Dan Hook

この回答を参照してください: https://stackoverflow.com/a/6035864/1516291

つまり、distutils\cygwinccompiler.pyの痕跡を削除するには、pythonインストールディレクトリの-mno-cygwinを変更する必要があるかもしれません。

18
Wang Tang

C:\Python27\Lib\distutils\cygwinccompiler.pyで文字列 "-mno-cygwin"のインスタンスを ""に置き換えることで修正された同じ問題がありました。

つまり、元のコード:

    self.set_executables(compiler='gcc -mno-cygwin -O -Wall',
                         compiler_so='gcc -mno-cygwin -mdll -O -Wall',
                         compiler_cxx='g++ -mno-cygwin -O -Wall',
                         linker_exe='gcc -mno-cygwin',
                         linker_so='%s -mno-cygwin %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))

更新されたコード:

    self.set_executables(compiler='gcc "" -O -Wall',
                         compiler_so='gcc "" -mdll -O -Wall',
                         compiler_cxx='g++ "" -O -Wall',
                         linker_exe='gcc ""',
                         linker_so='%s "" %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))

どのバージョンのGCCコンパイラを使用していますか? GCC 3.4.4を使用している場合、この問題は発生しません。それ以外の場合は、特にGCC 4.3.7の場合、上記のように「-mno-cygwin」文字列を空の引用符に置き換える必要があります。

3
Khokhar