アプリ版:「スタンプのみでお礼する」機能のリリースについて

1台が
SUNW Ultra-ENTERPRISE
もう1台が
SUNW,Ultra-30
で同じソース(mainのみのソースコード)をコンパイルし、lddコマンドを実行してみると
SUNW,Ultra-30の方に
/usr/platform/SUNW,Ultra-30/lib/libc_psr.so.1
というのが出てきてしまいます。
これを取り除きたいのですが、何をすれば良いのでしょう?

A 回答 (3件)

それは Solaris for SPARC の ldd の仕様なのか、実際にリンクされているのかは分かりませんが、いずれの場合にしても取り除くことはできません。



$ ldd /usr/lib/libc.so

を実行してみれば分かるかと思います。libc にリンクされないプログラムは存在しないので、少なくとも、これに依存しているライブラリを ldd の結果から外すことはできません。
    • good
    • 0
この回答へのお礼

了解しました。
とりあえず、この差は出てもしかたがないということになりました。
ありがとうございました。

お礼日時:2006/01/20 19:45

ダイナミックリンクのエラーというか障害は見つけるのが難しいのですよね。


疑うのは2系間のシステムディレクトリのデータ差異や環境変数の差異でしょうか。
MakeのログについてDiffをとってみたらいかがでしょうか。リンクの所だけで十分だと思います。
間違っていたらご容赦
    • good
    • 0
この回答へのお礼

とりあえず、この差は出てもしかたがないということになりました。
ありがとうございました。

お礼日時:2006/01/20 19:41

static link すればいいんじゃないでしょうか。

但し作られるバイナリはライブラリの一部を含むため少し大きくなります。

static link の指定方法はコンパイラによって違うと思います。(昔の Sun 純正の C コンパイラでは -static でした。gcc も -static のようです。他のコンパイラについては私は知りません)。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

試しに本物のソースに対して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 →何故か出てくる
>

どういう事なんでしょうかね・・・

お礼日時:2006/01/17 17:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!