2005/12/28

sun Studio 11の日本語版をいろいろいじってみた

とりあえず、Sun Studio 11をいろいろいじってみて、わかったことまとめておく。

1.フォントサイズの変更
 メニューや何とかのフォントサイズが、デフォルトでは小さすぎて読むことができない。
 文字を大きくするには、起動時に「--fontsize サイズ」と指定してやる。たとえば「sunstudio --fontsize 48」とすれば、こうなる。


2.機械的に生成したMakefileは、どうしても人間がいじらざるを得ないようだ。
 たとえば、下記に示すX-Designer関連のコンパイルやリンク、あるいはファイルを追加したときとか何とかかんとか。
 ここは素直に諦めるほかない。

3.「*.xd」ファイルを先にコンパイルしてくれない場合。
 X-Designerを使う場合、ほかの全ての「*.cc」ファイルのコンパイルに先立って「*.xd」ファイルを処理してくれないと困る。それなのにそうしてくれないことがある。
 そういうときは、生成されたMakefile中にある「# リンクまたはアーカイブ」とある部分をいじってやる。
 たとえば、ターゲット名が"TaEdit"で、処理させたい*.xdファイルが"gui.xd"なら、初期状態ではこういう風になっている。
$(TARGETDIR_TaEdit)/TaEdit: $(TARGETDIR_TaEdit) $(OBJS_TaEdit)
  $(TARGETDIR_TaEdit)/$(XD_OBJS_FILE_TaEdit_gui_xd) ・・・

 で、この中の$(OBJS_TaEdit)と$(TARGETDIR_TaEdit)/$(XD_OBJS_FILE_TaEdit_gui_xd)の順番を入れ替えてやる。
$(TARGETDIR_TaEdit)/TaEdit: $(TARGETDIR_TaEdit)
  $(TARGETDIR_TaEdit)/$(XD_OBJS_FILE_TaEdit_gui_xd) $(OBJS_TaEdit) ・・・

 これで*.xdファイルの方が先に処理されるようになる。

4.xdclass.hがインクルードできない。
 初期状態ではなぜか知らないが、xdclass関連のライブラリやヘッダファイルのインストール先として、「/opt/netbeans/3.5V11/platform/$(OSVARIANT)/prod」というパスを使おうとする。ところが、こんなパスは存在しない。参照すべきは「/opt/SUNWspro/prod」である。
 ところで、Makefile中ではこのパス名は"XDROOT"という変数で定義される。
 だから、Makefile中のこの変数を設定しているところを書き換えてやるか、あるいはMakefileのプロパティをいじって、コンパイル時のオプションとして"XDROOT=/opt/SUNWspro/prod"が追加されるようにしてやれば、インクルードできるようになる。

5.それでも、xdclass.hがインクルードできない。
 4.をやってもやっぱりコンパイルにこけることがある。
 そういう場合は致し方ないから、Makefile中の「BASICOPTS」という変数を設定しているところに"-I/opt/SUNWspro/prod/src/xdclass/h"を加えてしまう。

6.libxdclass.aが参照できない。
 どっかのアメリカ人に聞いてみたところ、4.をやればコンパイルが通る様になるらしいのだが、俺の場合はそうはならなかった。たぶん、俺の住んでいる所が日本だからなのだろう。
 これはもう仕方がないから、「OBJS_TaEdit(TaEditはターゲット名)」変数を設定しているところに"/opt/SUNWspro/prod/src/xdclass/lib/libxdclass.a"を付け加えてしまう。

これだけやれば、コンパイルが通るはずである。というか、俺はこれでできた。
だが、ことと次第によると、これでもリンク時に"__1cNxd_XtWidget_cKxd_destroy6M_v_"とか"__1cNxd_XtWidget_cJxd_enable6M_v_"とかいうシンボルが無い、とかいわれることがある。しかも、コンパイル時のコマンドにはちゃんと「libxdclass.a」をリンクするよう指定されているし、無いといわれたシンボルは全て「libxdclass.a」に含まれているのにだ。

実はこれは、PATHが通ったディレクトリにarコマンドが無いために発生するらしい。

だから、PATH環境変数中の最後の方に「usr/ucb/bin」を加えるなり、arコマンドをインストールするなりしなければならない。

あと、気がついたこととして、cleanをターゲットにmakeすると、出力先ディレクトリが削除される。Forte C++ 6.0ではoutputフォルダ内の*.oファイルが削除されるだけだったのだが、そのつもりでいると酷い目に遭う。注意しなければならない。

後はまぁ、必要なヘッダファイルの検索パスや、ライブラリの検索パス、スイッチなんかは、「BASICOPTS」をいじくれば何とかなりそうな気がする。

0 件のコメント: