- ベストアンサー
2つのマシンでコンパイルしたldd結果の違いを無くしたい
1台が SUNW Ultra-ENTERPRISE もう1台が SUNW,Ultra-30 で同じソース(mainのみのソースコード)をコンパイルし、lddコマンドを実行してみると SUNW,Ultra-30の方に /usr/platform/SUNW,Ultra-30/lib/libc_psr.so.1 というのが出てきてしまいます。 これを取り除きたいのですが、何をすれば良いのでしょう?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
それは Solaris for SPARC の ldd の仕様なのか、実際にリンクされているのかは分かりませんが、いずれの場合にしても取り除くことはできません。 $ ldd /usr/lib/libc.so を実行してみれば分かるかと思います。libc にリンクされないプログラムは存在しないので、少なくとも、これに依存しているライブラリを ldd の結果から外すことはできません。
その他の回答 (2)
- skyrandom
- ベストアンサー率0% (0/15)
ダイナミックリンクのエラーというか障害は見つけるのが難しいのですよね。 疑うのは2系間のシステムディレクトリのデータ差異や環境変数の差異でしょうか。 MakeのログについてDiffをとってみたらいかがでしょうか。リンクの所だけで十分だと思います。 間違っていたらご容赦
お礼
とりあえず、この差は出てもしかたがないということになりました。 ありがとうございました。
- ___noboru___
- ベストアンサー率28% (33/117)
static link すればいいんじゃないでしょうか。但し作られるバイナリはライブラリの一部を含むため少し大きくなります。 static link の指定方法はコンパイラによって違うと思います。(昔の Sun 純正の C コンパイラでは -static でした。gcc も -static のようです。他のコンパイラについては私は知りません)。
お礼
アドバイスありがとうございます。 試しに本物のソースに対してstatic linkにしてやってみましたがコンパイルが通らなくなってしまいました。元々ダイナミックリンクをしているので、その辺に影響があるみたいです。なので、この方法は無理みたいです。 lddの結果で気になったのですが、 普通 AAA.so.1 => /usr/lib/AAA.so.1 と => かでると思うのですが、 /usr/platform/SUNW,Ultra-30/lib/libc_psr.so.1 は =>がありません。最後にこれが出てくるだけなのです。 こんな感じ。 >ldd test AAA.so.1 => /usr/lib/AAA.so.1 →出てきて正しいもの /usr/platform/SUNW,Ultra-30/lib/libc_psr.so.1 →何故か出てくる > どういう事なんでしょうかね・・・
お礼
了解しました。 とりあえず、この差は出てもしかたがないということになりました。 ありがとうございました。