この章では、開発環境におけるツールとリソースの変更について説明します。この章の内容は次のとおりです。
dkio(7I)、filio、mtio(7I)、sockio(7I)、streamio(7I)、termio(7I)、 termios(7I) に関連するすべての ioctl は、Solaris 7 でサポートされます。
SunOS 4 の termios 構造体と Solaris 7 の termios 構造体との間に、互換性のない部分がいくつかあります。例えば SunOS 4 の termios 構造体にはある c_line フィールドが、Solaris 7 には含まれていません。
<sys/ttold.h> に定義がある次の ioctl は、実装されていません。
TIOCMODG
OTTYDISC
TABLDISC
KBLDISC
TIOCMIDS
TIOCSETX
NETLDISC
NTABLDISC
TIOCGETX
NTTYDISC
MOUSELDISC
次の ttycom ioctl 要求は Solaris 7 にはありません。
TIOCSCTTY
TIOCNOTTY
TIOCISPACE
TIOCPKT
TIOCGETPGRP
TIOCISIZE
TIOCUCNTL
TIOCOUTQ
TIOCTCNTL
TIOCCONS
Solaris 7 でサポートされる ioctl() を表 16-1 に示します。
表 16-1 ioctl() のサポート
ptrace() 機能は /proc の先頭に実装されています。新しいアプリケーションは直接 proc(4) を使用してください。
Solaris 7 では、ptrace() ルーチンは BCP モードで実行するアプリケーションをサポートするために単独で存在します。ptrace() ルーチンは要求値として整数 1〜9 を使用しますが、SunOS 4 ルーチンは <sys/ptrace.h> で要求値をシンボリック定数として定義します。次のシンボリック定数は、Solaris 7 と互換性があります。
PTRACE_TRACEME
PTRACE_PEEKTEXT
PTRACE_PEEKDATA
PTRACE_PEEKUSER
PTRACE_POKETEXT
PTRACE_POKEDATA
PTRACE_POKEUSER
PTRACE_CONT
PTRACE_KILL
PTRACE_SINGLESTEP
SunOS 4 の PTRACE_CONT addr 引数は、中断しているプロセスが実行を再開すべき場所を指定します。ただし、プロセスが中断したところから実行が再開する addr = 1 の場合は除きます。Solaris 7 は、addr が常に 1 に等しく、実行が常にプロセスが中断したところから再開することを要求します。また、データによって指定されたものを除いたすべてのペンディングシグナルをキャンセルします。SunOS 4 の PTRACE_CONT は、ペンディングシグナルをすべてキャンセルするとは限りません。
表 16-2 に示す SunOS 4 の有効な要求は、 Solaris 7 ptrace() ルーチンではサポートされません。
表 16-2 Solaris 7 でサポートされていない ptrace() 要求
PTRACE_ATTACH |
PTRACE_GETWINDOW |
PTRACE_DETACH |
PTRACE_SETWINDOW |
PTRACE_GETREGS |
PTRACE_22 |
PTRACE_SETREGS |
PTRACE_23 |
PTRACE_GETFPREGS |
PTRACE_26 |
PTRACE_SETFPREGS |
PTRACE_27 |
PTRACE_READDATA |
PTRACE_28 |
PTRACE_WRITEDATA |
PTRACE_SYSCALL |
PTRACE_READTEXT |
PTRACE_DUMPCORE |
PTRACE_WRITETEXT |
PTRACE_SETWRBKPT |
PTRACE_GETFPAREGS |
PTRACE_SETACBKPT |
PTRACE_SETFPAREGS |
Solaris 7 は、System V Inrerface Definition, Third Edition (SVID 3) に準拠しています。SunOS 4.1 System V ライブラリとともに書かれたプログラムは Solaris 7 への移植が簡単ですが、SunOS 4 BSD C ライブラリを使用するプログラムにとっては多くの労力を必要とします。
機能や機能グループの中には、Solaris 7 では別のライブラリに移動されたものがあります。このため、SunOS 4 のアプリケーションを Solaris 7 でコンパイルする時に、これらの移動された機能を参照することで未定義とフラグされる可能性があります。
コンパイルした後、未定義とフラグされた任意の機能のマニュアルページを確認してください。機能説明のところに、-l リンカーオプションと、シンボルを解決する必要のある任意のインクルードファイルの両方がリストされます。
共用ライブラリは現在、マイナーバージョン番号をサポートしません。
共用初期設定データファイル (.sa) はすでに不要となっており、.sa ファイルは Solaris 7 では提供されません。
前リリースでは、静的テーブルの割り当てがファイル記述子やアクティブなプロセスなどのリソースに使用されました。これらのリソースは、現在は動的に割り当てられます。つまり、空いている物理メモリによって制限されることを意味します。表 16-3 にリソースの制限を示します。
表 16-3 リソースの制限
構成 |
制限 |
---|---|
|
プロセスによって作成できるコアファイルの最大サイズ (バイト単位) |
|
プロセスが使用できる最大 CPU タイム (秒単位) |
|
プロセスのヒープの最大サイズ (バイト単位) |
|
プロセスによって作成できるファイルの最大サイズ (バイト単位) |
|
プロセスによって作成できるファイル記述子の最大数より 1 大きい値 |
|
プロセスのマップされたアドレスサイズが増大できる最大サイズ (バイト単位) |
|
プロセスのスタックの最大サイズ (バイト単位) |
ネットワークライブラリを必要とする共有オブジェクトはすべて動的にリンクしなければなりません。ネットワークライブラリは、libdl.so.1 を必要とし、アーカイブライブラリは利用できません。
表 16-4 に SunOS 4 ライブラリと Solaris 7 ライブラリ、およびそれらの位置を示します。
表 16-4 ライブラリ位置の比較
ライブラリ名 |
SunOS 4 ディレクトリ |
Solaris 7 ディレクトリ |
---|---|---|
libbsdmalloc.a |
/usr/lib |
/usr/lib |
libc.a |
/usr/lib および /usr/5lib |
/usr/lib |
libc.so.1.7 |
/usr/lib |
/usr/lib |
libc.so.2.7 |
/usr/5lib |
/usr/lib |
libc_p.a |
/usr/5lib |
なし |
/usr/lib および /usr/5lib |
/usr/ucblib および /usr/ccs/lib |
|
libcurses_p.a |
/usr/5lib |
なし |
libdbm.a |
/usr/lib |
/usr/ucblib |
libdl.so.1.0 |
/usr/lib |
/usr/lib |
libg.a |
/usr/lib |
なし |
libkvm.a |
/usr/lib |
なし |
libkvm.so.0.3 |
/usr/lib |
/usr/lib |
libl.a |
/usr/lib |
/usr/ccs/lib |
libln.a |
/usr/lib |
なし |
liblwp.a |
/usr/lib |
なし |
/usr/lib |
/usr/lib および /usr/lib/libp |
|
libmp.a |
/usr/lib |
/usr/lib |
libnbio.a |
/usr/lib |
なし |
libnsl.a |
/usr/lib |
/usr/lib |
libpixrect.a |
/usr/lib | |
libpixrect.so.2.14 |
/usr/lib |
なし |
libposix.a |
/usr/lib |
なし |
libresolv.a |
/usr/lib |
/usr/lib |
librpcsvc.a |
/usr/lib |
/usr/lib |
libsuntool.so.0.54 |
/usr/lib |
なし |
libsunwindow.so.0.55 |
/usr/lib |
なし |
/usr/5lib |
なし |
|
libsvidm_p.a |
/usr/5lib |
なし |
/usr/lib および /usr/5lib |
/usr/ucblib および /usr/ccs/lib |
|
libtermlib.a |
/usr/lib および /usr/5lib |
/usr/ccs/lib |
libxgl.so.1.1 |
/usr/lib |
/opt/SUNWits/ Graphics-sw/xgl/lib |
/usr/xpg2lib |
なし |
|
liby.a |
/usr/lib および /usr/5lib |
Solaris 7 で利用できる make ユーティリティは 2 種類あります。デフォルトである /usr/ccs/bin/make は、SunOS 4 の make コマンドと同じです。SVR4 版は /usr/ccs/bin/make で利用できます。
デフォルトの make を使うと、Makefile を変更する必要はありません。ただし、Makefile で使用するコマンドのいくつかは変更されている可能性があります。たとえば、Makefile で一般に使用される install(1) は、オプションに変更が加えられたために次の例のように予期しない結果を生じることがあります。
SunOS 4 Makefile - install:
install -o bin -g bin -m 444 target.c /usr/bin/target |
SunOS 5.7 Makefile - install:
install -u bin -g bin -m 444 target.c /usr/bin/target |
/usr/ueb にある install(1B) のバージョンは SunOS 4 のバージョンと互換性があります。
個々のインタフェースに関する情報については、付録 A 「コマンドリファレンス」 の互換性に関する表で確認してください。
Solaris 7 のソースコード管理システム (SCCS) は SunOS 4 の SCCS とは少し異なっています。コマンドとサブコマンドの同じセットが両方の環境でサポートされています。SunOS 4 システムで使用される SCCS ディレクトリおよび s.files は Solaris 7 システムでも同様に動作します。
SunOS 4 ソフトウェアでは、SCCS コマンドは /usr/sccs ディレクトリに置かれていました。Solaris 7 ではこれらのコマンドは他のプログラミングツールとともに /usr/ccs/bin に置かれています。
SunOS 4 と Solaris 7 ユーティリティの相違の 1 つに読み取り不可能な s.file の処理があります。SunOS 4 コマンドは、読み取り不可能な s.file が出現すると、エラーを出力して続行します。Solaris 7 コマンドはエラーを無視します。
バイナリ互換パッケージは開発環境としては提供されていませんが、将来のリリースとのバイナリ互換性を改善できる適切なプログラミングが必要です。
バイナリ互換パッケージは、部分的に静的にリンクされているかあるいは動的にリンクされているハイブリッドと同じく、動的または静的にリンクされたアプリケーションと互換性があります。
バイナリ互換パッケージは、「適切に動作する」ユーザアプリケーションで使用することができます。「適切に動作する」アプリケーションとは、次の条件を満たすアプリケーションを指します。
直接カーネルにトラップしない
どのシステムファイルにも直接書き込まない
/dev/kmem、 /dev/mem または libkvm を使用しない
公表されていない SunOS インタフェースを使用しない
カスタマ供給のドライバに依存しない
上記の条件を満たしていないと、アプリケーションは予想できない結果を生じることがあります。
バイナリ互換パッケージの使用方法に関する情報は、『バイナリ互換性ガイド』に説明があります。
Solaris 7 環境は現在パッケージという単位でバンドルされています。これらのパッケージには、システムに追加したり、システムから削除したりする必要があるファイルおよび情報のすべてが含まれます。
pkginfo ファイル - これはパッケージの特性を設定する ASCII ファイルです。パッケージを記述してそのインストールのための制御パラメータを設定する macro=value の対で構成されています。詳細については、pkginfo(4) のマニュアルページを参照してください。
prototype ファイル - これはパッケージの内容を定義する ASCII ファイルです。そのまま出荷できるオブジェクト (たとえば、ファイル、ディレクトリ、リンク) ごとに 1 つのエントリがあります。また、pkginfo、depend および copyright ファイルなどのパッケージ情報ファイルおよびスクリプトのインストールエントリを含みます。詳細については、prototype(4) のマニュアルページを参照してください。
copyrightファイル - これはパッケージの著作権に関する記述を提供する ASCII ファイルです。コメント行を含むその内容はパッケージのインストール時に表示されます。詳細については、copyright(4) のマニュアルページを参照してください。
パッケージの内容 - パッケージの内容が含まれます。
スクリプト - スクリプトを使用してパッケージのインストールおよび削除を制御したり、ユーザに入力を要求したり、または特定のクラスのすべてのオブジェクトに対して処理を実行できます。スクリプトは Bourne シェルが実行できるものでなければなりません。
アドオンアプリケーションソフトウェアは、フロッピーディスク、テープ、または CD-ROM から Solaris 7 システムにインストールできるようにパッケージ化されていなければなりません。『Application Packaging Developer's Guide』では、パッケージを作成するためのガイドラインを記載しています。
パッケージを作成し、操作するためのユーティリティがいくつか提供されます。 表 16-5 にパッケージの作成に便利なコマンドを示します。
表 16-5 パッケージ作成用コマンド
pkgmk コマンドへ入力するプロトタイプファイルのエントリを生成する |
|
インストール可能なパッケージを生成する |
|
パッケージフォーマットを変換する |
表 16-6 にパッケージの追加と削除に便利なコマンドを示します。
表 16-6 パッケージの追加と削除用コマンド
システムにソフトウェアパッケージを追加する |
|
要求スクリプトに対する応答を格納する |
|
システムからパッケージを削除する |
|
インストールの結果をチェックする |
表 16-7 にパッケージに関する情報を提供するコマンドを示します。
表 16-7 Cパッケージに関する情報を提供するコマンド
インストール済みパッケージに関するソフトウェアパッケージ情報を表示する |
|
この節では OPEN LOOK Intrinsic ToolKit (OLIT) と XViewTM について説明します。
OPEN LOOK Intrinsics Toolkit (OLIT) は Xt Intrinsics をベースにしています。このツールキットは多くのウィジェットセットに共通な関数セットを提供し、X 環境のユーザインタフェースコンポーネントを作成したり、流用したり、削除したりします。
XView Window Toolkit は OPEN LOOK グラフィカルユーザインタフェース (GUI) 仕様を実装しています。
XView は varargs に基づく可変長の属性値リストを使用し、ウィンドウ、メニュー、およびスクロールバーなど、作成するオブジェクトを指定します。このツールキットでは、すでに通常の動作が定義されているため、手続き型プログラミングによくあるように定型のコードを繰り返す必要がありません。
ほとんどの SunOS 4 のプログラミングツールが利用でき、同じ機能を提供しますが、多くのものが新しい位置にあります。現在バンドルされるプログラミングツールはすべて 2 つのディレクトリ、/usr/ccs/bin と /usr/ccs/lib にあります。 表 16-8 にプログラミングツールと SunOS 4 の位置を示します。
表 16-8 バンドルされるプログラミングツール
SunOS 4 コマンド |
SunOS 4 での位置 |
---|---|
/usr/sccs |
|
/usr/bin |
|
/usr/bin |
|
/usr/sccs |
|
/usr/sccs |
|
/usr/lib/cpp |
|
/usr/sccs |
|
/usr/ucb |
|
/usr/sccs |
|
/usr/sccs |
|
/usr/bin |
|
/usr/bin |
|
/usr/bin |
|
/usr/bin |
|
/usr/bin |
|
/usr/bin |
|
/usr/bin |
|
/usr/sccs |
|
/usr/sccs |
|
/usr/bin |
|
/usr/sccs |
|
/usr/sccs |
|
/usr/ucb |
|
/usr/sccs |
|
/usr/bin |
|
/usr/bin |
|
/usr/ucb |
|
/usr/bin |
|
/usr/sccs |
|
/usr/ucb |
|
/usr/sccs |
|
/usr/old |
|
/usr/sccs |
|
/usr/bin |
|
/usr/lib |
表 16-9 に、新しい Solaris プログラミングツールとその説明を示します。
表 16-9 新しいプログラミングツール
新しいコマンド |
説明 |
---|---|
COFF のオブジェクトコード逆アセンブラ |
|
オブジェクトファイルの選択された部分をダンプする |
|
ソースファイルから文字列を抽出する |
|
オブジェクトファイルのコメントセクションを操作する |
|
正規表現コンパイラ |
|
システムコールとシグナルを追跡する |
|
ptools |
多方面の /proc ユーティリティ |
表 16-10 に、SunOS 5.7 でアンバンドルである SunOS 4 コマンドを示します。
表 16-10 アンバンドル製品のプログラミングツール
アンバンドルのコマンド |
説明 |
---|---|
簡単な C プログラム整形ツール |
|
C コンパイラ |
|
プログラムにフローグラフを生成する |
|
対話方式で C プログラムを検査する |
|
C プログラム実行追跡を行う |
|
C プログラムクロスリファレンスを行う |
|
ソースレベルデバッガ |
|
ウィンドウベースのソースレベルデバッガ |
|
call-graph プロファイルデータを表示する |
|
C プログラムソースファイルをインデントおよびフォーマットする |
|
インラインのプロシージャコールの展開 |
|
C プログラムベリファイア |
|
COFF オブジェクトファイルの選択された部分をダンプする |
|
test coverage 解析および文単位のプロファイルを構築する |