distcc 失敗

armで分散コンパイルしようとがんばってみたけど、失敗。

Error: C3065E: type of '/tmp/distccd_33ed120c.ii' unknown

とかって言われる。どうもarmccが出してるっぽいけど

がんばった手順

  • サーバ機とクライアント機にcygwinインストール。distcc込みで。
  • サーバ機でcygwin起動。
cd /bin
    • Cドライブのシンボリックリンク作成
ln -s /cygdrive/c /C
    • distccがarmccを呼び出すようにシンボリックリンク作成。

元のgcc.exe達の名前を*.exe.org等に変えて、呼び出されないようにもしておく

ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" gcc
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" g++
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" cc
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" c++
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" cpp
  • サーバ機でdistccd立ち上げ
distccd -j1 --daemon --allow 0.0.0.0/0 --log-file /var/log/distcc.log
  • クライアント側でcygwin立ち上げ
cd /bin
    • Cドライブのシンボリックリンク作成
ln -s /cygdrive/c /C
    • サーバの設定

サーバのアドレスを指定。左から順番に使われる。

export DISTCC_HOSTS='127.0.0.1 192.168.0.1'
    • クライアント側でもdistccがarmccを呼び出すようにシンボリックリンク作成。

元のgcc.exe達の名前を*.exe.org等に変えて、呼び出されないようにもしておく

ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" gcc
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" g++
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" cc
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" c++
ln -s "/C/Program Files/ARM\RVCT/Programs/2.1/328/win_32-pentium/armcc.exe" cpp
  • クライアント側でもdistccd立ち上げ
distccd -j1 --daemon --allow 0.0.0.0/0 --log-file /var/log/distcc.log
  • クライアント側でmake。makefileのなかでarmcc呼んでるところをdistccに書き換えておいた。
    • 「../prj/ccoprion.txtがないよ」と関連ファイルが無いエラーといわれたので、しかたなく c:\cygwin/bin内に必要なファイルをコピー
    • こんどは「Error: C3065E: type of '/tmp/distccd_33ed120c.ii' unknown」とかいわれて、どうにも分からず挫折。


どうもフローティングライセンスだと、ライセンスの確認で時間が取られるしライセンスの数も食うので、うまくいったところであまり効果が出ないっぽい・・・。