perlのビルドに失敗したのに、懲りず、今度はfedora18上でcygwin64なgccのビルドをやってみました。
fedoraだとmingw64系gccでのクロスビルドの環境がrpmでパッケージ化されているので
それをrawhide(f19)から以下を拝借します。
mingw-filesystem
mingw-binutils
mingw-gcc
それをしこしこと必要な部分をmingwをcygwinに地道に書き換えていきます。
mingwだとsys-rootの直下がmingwになっているのでそこだけusrにします。
cygwin関係のlibとheaderを今回は作成しない方法でやりました。
cygwin64の場合だとsys-root直下に
base-cygwin-toolchain-install-first-20130217-2.x86_64.tar.xz
を解凍します。
# cd /usr/x86_64-pc-cygwin/sys-root
# tar xJf base-cygwin-toolchain-install-first-20130217-2.x86_64.tar.xz
# cd usr
# ln -s ../bin
# ln -s ../lib
gccビルド時のハマりどころだけ簡単に説明しときます。
公開されているcygwin64のgccは、winsupのパッケージと一緒にビルドされているらしく
windows.hがないと言われてまず、ビルドが止まります。
cygwin-w64.hの
ヘッダーの検索に
%R/usr/include/w32api
を追加します。
次に、windows系のlibがないといって止まります。
これも同じくcygwin-w64.hに
/usr/lib/w32api
をlibの検索に引っかかるようにdefaultの検索
/lib /usr/lib
を
/usr/lib /usr/lib/w32api
にします。
base-cygwin-toolchain-install-first-20130217-2.x86_64.tar.xzのcygwin64なgccは
--disable-shared --enable-static
この設定でクロスコンパイルされているので、libgcc等がdll化されていません。
libgccのビルドの最後のほうでlinkエラーになりました。
回避方法はlibgccのconfigure、config.hostの中の該当箇所にx86_64-*-cygwin*を追加するだけです。
cygwin64用のgccのpatchが公開されていますが、ちょっと足りなかかったようです。
[0回]
PR