教えて下さい。
Solaris10(SunStudio12.1)でビルドしたAPを、
Solaris8で実行しようとしたら、下記のエラーが出て実行できません。
「重大なエラー: libm.so.2: open に失敗しました: ファイルもディレクトリもありません。」
Solaris8のマシンの/usr/libには、libm.so.1はありますが、libm.so.2はありません。
Solaris10のマシンには両方あります。
(1)Solaris10でのビルド時に、libmをstaticリンクすることも考えたのですが、
OSに依存するライブラリだと思いますので、
(2)Solaris8のマシンに存在するlibm.so.1で動作してくれないものかと思っています。
(2)は可能でしょうか?どうすればできますでしょうか?
そもそも動的リンクなのに、ビルド時にライブラリのバージョンは固定されてしまうものなのでしょうか?
それぞれのマシンには /usr/lib/libm.so というシンボリックリンクがあり、
Solaris10ではlibm.so.2を、
Solaris8ではlibm.so.1を指しています。
バージョンに拘らずシンボリックリンク(libm.so)を使ってくれないものなのでしょうか?
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
> やはりビルド時点でライブラリのバージョンは固定されてしまうものなのでしょうか?
固定されます。ライブラリのDT_NEEDEDに書き込まれているでしょう。
バイナリエディタなどで libm.so.2 という文字列が確認できるはずです。
どうしてもと言われるなら、バイナリエディタでその文字列を
libm.so.1 に書き換えることです。
書き換えた後のバイナリは Solaris 10 では動作しないことに注意してください。
ただし、繰り返しますがライブラリのメジャーバージョンが違うと言うことは
ライブラリの互換性がないことをベンダーが主張しているものです。
それは予期せぬ結果を招くリスクがあるということをご理解ください。
Solaris 10 の libm.so.2 を Solaris 8 にコピーするわけにも行かないでしょうから、
そのようなケースに出くわした場合、通常はlibm を静的リンクします。
再度のアドバイス、有難うございます。
ビルド時点でライブラリのバージョンは固定されてしまうものなのですね。
分かりました。
Solaris10でlibmのstaticリンクを試みましたがダメでした。
libm.aが存在していません。
libmだけでなく、/usr/lib,/libにはstaticのライブラリは全くありません。
ご回答No.1に書いて頂いた、Solaris8マシンでの再リンクを試してみます。
ただ、Solaris8で現コンパイラ(CC5.5)が使えるサーバマシンは今回廃棄予定なので、、、
困りました、、、
なお、残す予定のSolaris8のクライアントマシン上で、
新サーバ(Solaris10)に入れてある新コンパイラ(CC5.10)を使って再リンクを試してみましたが、
/usr/include/sys/ccompile.hがない等のメッセージが出るなど、
さすがに全くダメのようです。
ご回答No.1に書いて頂いた、
「Solaris 8上で libm.so.2 -> libm.so.1 のシンボリックリンクを作成」は、
取り敢えず動きました。
有難うございました。
No.1
- 回答日時:
Solaris 8上で libm.so.2 -> libm.so.1 のシンボリックリンクを作成すれば
動作させることができると思いますが、
# ln -s libm.so.1 /usr/lib/libm.so.2
ライブラリのメジャーバージョンが違うということは一般的には互換性が
ないことを意味します。なので、安定動作を期待するなら Solaris 8 上で
再リンクする必要があります。
ご回答、有難うございます。
ご提案下さったシンボリックリンク案もいいと思いました。
ただ、Solaris8のマシンはクライアントとして使っていて複数あるため、
できればクライアント側は変更しないで済ませたいです。
やはりビルド時点でライブラリのバージョンは固定されてしまうものなのでしょうか?
なお、Solaris10のマシンはサーバで、このマシンでAPのビルドを行い、
NIS+ユーザのホームにAPプログラムを配置しています。
クライアントからNIS+ユーザのホームに置いてある
APのクライアントプログラムを実行する構成を取っています。
今回、サーバマシンだけを Solaris8 から Solaris10 に更新しようとして、
この問題に突き当たっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- 宇宙科学・天文学・天気 宇宙の外側を、世界初、理論と数式で、発表する。 3 2023/03/05 12:26
- 一戸建て リクシルのシエラSの良い所を教えて下さい! 新築予定です。 本当はクリナップが良かったのですが、コス 2 2022/07/19 19:32
- 政治 ロシアは対空ミサイルを地上攻撃に流用しています。日本もそうするべきですよね? 2 2023/02/23 21:18
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- 一戸建て リクシルのシエラSの良いところ教えて下さい! こんど新築でリクシルのキッチン、シエラSを導入します。 3 2022/07/21 16:11
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- 友達・仲間 彼氏持ちの女子と下校した 1 2022/12/14 22:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
make debug で DEBUGをtrue に...
-
MySQLにて、SQLファイルの実行...
-
Windowsコマンドプロンプトのmo...
-
VBA PDFで保存するマクロで実行...
-
macでDocuWorks を使うのは無理?
-
Microsoft365について
-
VBA グラフを複数作成する場合
-
Apacheのアンインストール
-
Ubuntu に xed をインストール...
-
SolarisとLinuxの違い
-
mac mini 2012 LINE 登録仕方
-
CentOS7のインストールについて
-
kali linuxのアーカイブ(過去の...
-
[Linux] Deepin OSってどうなん...
-
windows VISTA LinuXインストール
-
Windowsの古いゲーム(32bit OS...
-
VB6.0とVB.NETの違いについて
-
PostgreSQLのインストール
-
ロータス123 を windows10 に...
-
■ブートキャンプ マックでの右...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
lddの見方について教えてくださ...
-
Fedora 9へのOpenGLのインスト...
-
libm.so.2: open に失敗しました
-
openSSLの脆弱性はSSHにも影響...
-
make debug で DEBUGをtrue に...
-
VScodeでステップ実行が出来ない
-
Windowsコマンドプロンプトのmo...
-
MySQLにて、SQLファイルの実行...
-
VBA PDFで保存するマクロで実行...
-
Windowsの古いゲーム(32bit OS...
-
インストールした覚えがないア...
-
macでDocuWorks を使うのは無理?
-
Microsoft365について
-
ロータス123 を windows10 に...
-
SolarisとLinuxの違い
-
Notesの再セットアップ
-
EXCELの「接続」のSQLのコマンド...
-
一太郎をMacで使いたいのですが...
-
Windows11へのアップグレード
-
ubuntuでteamvewerがインストー...
おすすめ情報