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」とかいわれて、どうにも分からず挫折。
どうもフローティングライセンスだと、ライセンスの確認で時間が取られるしライセンスの数も食うので、うまくいったところであまり効果が出ないっぽい・・・。