torutkのブログ

ソフトウェア・エンジニアのブログ

Java SE 6 (Mustang)のビルド続行

一昨日挫折したエラーの対処調査から再開。

エラー対処続行

Makefile:110: *** multiple target patterns. Stop.

エラーとなるMakefileは次のものです。

make[4]: Entering directory `/home/toru/study/javaw/j2sdk/mustang/ex8/b48/j2se/m
ake/java/redist'

そこで、まずはエラーが発生しているMakefileの該当行とその前を見ると、

105 $(BINDIR)/unicows.dll: $(UNICOWS_DLL_PATH)/unicows.dll
106	$(install-file)
107	$(CHMOD) a+x $@
108	@$(ECHO) $@ >> $(INSTALLED_FILES_FILE)
109
110 $(BINDIR)/msvcr71.dll: $(MSVCR71_DLL_PATH)/msvcr71.dll  
111	$(install-file)
112	$(CHMOD) a+x $@
113	@$(ECHO) $@ >> $(INSTALLED_FILES_FILE)

105行目がエラーになっていないので、怪しいのは$(MSVCR71_DLL_PATH)です。
ここは、make時に設定した環境変数ALT_MSVCR71_DLL_PATHと同じになっているはずです。
ALT_MSVCR71_DLL_PATHは、ALT_COMPILER_PATHと同じです。

いろいろ検索していると、GNUmakeは空白を含んだパスを分離した別のパスとみなす問題があるので、パスを空白を含まないDOS形式(8+3文字)で指定するとよいらしいとありました。
http://www-1.ibm.com/support/docview.wss?uid=swg21119863

そこで、環境変数設定を変更しました。

REM set ALT_COMPILER_PATH="C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin"
set ALT_COMPILER_PATH=C:\PROGRA~1\MICROS~1\bin
make[4]: D:/PROGRA~1/MICROS~1/bin/lib: Command not found

前回のRC.exeと同様、LIB.exeをコンパイラディレクトリにコピーします。
Microsoft Platform SDKのBin\Win64の中にあります。依存するDLLは、msvcr70.dllなので、これも一緒にコピーします。

LINK : fatal error LNK1181: cannot open input file 'setargv.obj'

Visual C++ Toolkitには、setargv.objがないので、Microsoft Platform SDKの中のsrc/crtディレクトリにあるsetargv.cをコンパイルしてsetargv.objを作ります。

> cd "\Program Files\Microsoft SDK\src\crt"
> cl /I. /c -D_CRTBLD setargv.c
> move setargv.obj ..\..\lib
>
make[5]: *** No rule to make target `E:/java/mustang_out/classes/com/sun/java/swing/plaf/windows/icons/Computer.gif', needed by `other_files'. Stop.

make[5]: Entering directory `/cygdrive/e/java/mustang/j2se/make/javax/swing/plaf
'
ここで中断(読書会出発時刻)

Java読書会

今日はJava読書会の日です。
アジャイルソフトウェア開発の奥義
アジャイルソフトウェア開発の奥義」を読む回最終回です。10ヶ月でコンプリート。ただし、今回は最後まで読み終わるために、初めての「残業」となり終わった時間は夜8時でした。
翻訳者の瀬谷さんも前回に続き午前中だけですが時間を割いて参加されました。