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」は発生していません。
この回答を参照してください: https://stackoverflow.com/a/6035864/1516291
つまり、distutils\cygwinccompiler.py
の痕跡を削除するには、pythonインストールディレクトリの-mno-cygwin
を変更する必要があるかもしれません。
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」文字列を空の引用符に置き換える必要があります。