基本を再チェック〜gcc〜 |
YAMAMORI Takenori ●yamamori |
Solarisの場合,本文の実行例 のままでは,コンパイルが通ったとしても, 実行時に共有ライブラリが見つからず,実行できないでしょう. あるいは,間接的にリンクしているlibSMほかのライブラリのため, コンパイル(リンク)も通らないかも知れません.
Linuxなどでは共有ライブラリの実行時のPATHを, ldconfigを用いて解決していますが, Solarisにはldconfigはなく,/usr/X11R6/libなどの共有ライブラリのPATHを それぞれの実行ファイル(この場合はhello_x11)に埋め込む必要があります.
共有ライブラリのPATHを埋め込むためのオプションは「-R」で, 「-R」には通常「-L」で指定したディレクトリと同じものを指定します. この場合は結局,次のようなオプションになります.
$ gcc -O2 -I/usr/X11R6/include -L/usr/X11R6/lib -R/usr/X11R6/lib \ hello_x11.c -lXaw -lXmu -lXt -lX11 -o hello_x11
なお,上記コマンドは/usr/X11R6以下に自分でX11R6.4またはX11R6.5.1などを インストールしている場合の例です. Solarisに付属のOpenWindowsを用いる場合は,/usr/X11R6をすべて/usr/openwinに 置き換えて下さい.
このように,gccを直接起動する方法でのXのプログラムのコンパイルは, OSやXの環境によってgccに指定するべきオプションが変わり,かなり繁雑です. これらついてはいずれImakefileを用いることにより解決されることになります.