1つのバージョンのStudio(11や12.xなど)を使用してプログラムをビルドする場合、以前のバージョンのStudioのライブラリにリンクすることは期待できません。使用しているプログラミング言語はわかりませんが、この問題はFortranとC++で最も一般的です。
たとえば、問題を回避するための手順を実行しない限り(以下を参照)、STLportまたはIntervalライブラリを使用するC ++プログラムは、実行時にコンパイラとともにインストールされた共有ライブラリにリンクしようとします。プログラムがStudio11または12.xでビルドされている場合、Studio10ライブラリとのリンクはうまく機能しません。
ただし、プログラムが/ usr / libのデフォルトのランタイムライブラリにのみリンクしている場合、Studioがターゲットシステムにインストールされているかどうか、またはどのバージョンがインストールされているかは関係ありません。これが当てはまるかどうかは、プログラムを構築したシステムのプログラムで「ldd」を実行することで確認できます。
% ldd myprog
出力には、プログラムが使用するすべての共有ライブラリと、それらがどこから来たのかが表示されます。コンパイラのインストール領域にライブラリがない場合は、問題はありません。
他の唯一の問題はSolarisの互換性です。SolarisバージョンNでプログラムをビルドする場合、Solaris N + 1以降でプログラムを実行することは期待できますが、SolarisN-1以前では実行できません。その理由は、Solarisは古いインターフェイスを保持しますが、新しいインターフェイスを追加するためです。プログラムは、古いバージョンのSolarisには存在しないSolarisインターフェイスに依存している可能性があります。特にSolaris10の場合、後のアップデートでは、以前のアップデートにはない新しい機能とインターフェイスが導入されました。たとえば、アップデート10でプログラムをビルドした場合、元のSolaris10では実行されない可能性があります。
さらに、ビルドシステムに新しいバージョンのC ++ランタイムライブラリ(パッケージSUNWlibC)のパッチが適用されている場合、ターゲットシステムには同じパッチまたはそれ以降のパッチが適用されている必要があります。コマンドを実行すると、パッチのバージョンを確認できます
% showrev -p | grep SUNWlibC
Studioに付属しているライブラリについての私の最初の議論に戻って、この論文
http://www.oracle.com/technetwork/articles/servers-storage-dev/linkinglibraries-396782.html
コンパイラのインストールに依存しないように、配布用のプログラムを構築する際のベストプラクティスについて説明します。
Steve Clamage OracleC++コンパイラチーム