appcert
が報告した問題に対する対処方法
非公開シンボルの使用。 Solaris のリリースごとに、非公開シンボルの動作が変わっていたり、非公開シンボルがなくなっている場合があるため、非公開シンボルに依存するアプリケーションは、開発された Solaris リリースとは異なるリリース上では実行できない可能性があります。appcert
によって、アプリケーションで非公開シンボルが使用されていると報告された場合は、非公開シンボルを使用しないでアプリケーションを書き直す必要があります。
降格されたシンボル。 降格されたシンボルとは、後の Solaris リリースで削除された、または有効範囲が局所的 (ローカル) となる Solaris ライブラリの関数やデータ変数を指します。そうしたシンボルを直接呼び出すアプリケーションは、ライブラリがそのシンボルを外部参照可能としないリリースでは実行できなくなります。
結合されていないシンボル。 結合されていないシンボルは、appcert
によって呼び出されたときに動的リンカーが解決できなかったアプリケーションによって参照されるライブラリシンボルを指します。結合されていないシンボルは、必ずしもバイナリの安定性が低いことを示すものではありませんが、降格されたシンボルに対する依存関係のような、重大な問題を示している可能性があります。
旧式のライブラリ。 旧式のライブラリは将来のリリースで Solaris から削除される可能性があります。appcert
ユーティリティはそうしたライブラリが使用されていると注意を喚起します。今後のリリースでそのライブラリがなくなると、それに依存するアプリケーションが動作しなくなるからです。こうした問題を避けるため、旧式のライブラリのインタフェースは使用しないでください。
sys_errlist または sys_nerr の使用。 sys_errlist シンボルおよび sys_nerr シンボルの使用は、sys_errlist 配列の終端より後に対して参照が行われる場合があるため、バイナリの安定性を低下させる可能性があります。こうした危険を回避するため、代わりに strerror を使用してください。
強いシンボルや弱いシンボルの使用。 今後の Solaris のリリースでは動作が変わる可能性があるため、弱いシンボルと関連付けられている強いシンボルは、非公開として予約されています。アプリケーションは、弱いシンボルを直接的にのみ参照しなければなりません。強いシンボルの例に _socket がありますが、これは弱いシンボル socketと関連付けられています。