![実行ファイルが[冗長]でない場合](https://linux33.com/image/18066/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%5B%E5%86%97%E9%95%B7%5D%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88.png)
今日私は私を混乱させることに会いました。同僚がダウンロードした特定のプリコンパイルされたバイナリを使用しています(使用可能)。ここ)。使用しているUbuntu 10.04 LTSサーバーでこのファイルを実行しようとすると、権限が正しく設定されていてもファイルが見つかりません。
しかし、OpenSUSE 11.4で同じことをしようとしたときに完璧に動作しました。それを実行すると、file
次のようになります。
ELF 32ビットLSB実行可能ファイル、Intel 80386、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、GNU / Linux 2.6.15用、削除済み
UbuntuシステムとOpenSUSEシステムは両方とも64ビットインストールであり、file
両方のシステムで同じ情報を返します。
私が見るにはこれがよさそうだ。 opensuseボックスでは、LDDは私にライブラリファイルの短いリストも提供しました。手動チェック時に指定されたファイルはすべてUbuntuサーバーにも存在します。ただし、Strace出力は異なります。
以下を使用して開きます。
execve("./trid", ["./trid"], [/* 122 vars */]) = 0
Ubuntu(フルパスを提供しても結果は変わりません):
execve("./trid", ["./trid"], [/* 19 vars */]) = -1 ENOENT (該当するファイルやディレクトリなし)
これらのファイルがこのように実行されないのはなぜですか?
答え1
タイプ
ldd ./trid
これはopenSuseシステムとUbuntuシステムの両方で機能します。
私は後者のライブラリファイルが見つからないことを発見すると思います。