GNU/Linux >> Linux の 問題 >  >> Linux

なぜ .so ファイルは実行可能ですか?

おそらく歴史的な理由だけだと思います.

BlueBomber の答えはおそらく歴史的には正しいですが、実際には必要ではありません 共有オブジェクトを実行可能にします。

私のUbuntuシステムでは、そうではありません。 30 /lib/*.so*のうち および 600 /usr/lib/*.so* ファイルの 1 つだけが実行権限を持っています。これはおそらく単なる不具合です。

実行権限は、exec*() のいずれかを介してファイルを実行することを許可します 機能;共有オブジェクト ファイルには実行可能コードが含まれていますが、そのようには実行されません。

一方、私がアクセスできる CentOS 5.7 システムでは、これらのファイルは 実行可能;同じことが SPARC Solaris 9 システムにも当てはまります。 (これらのファイルのいくつかの実行権限をオフにして、何かが壊れるかどうかを確認するのは興味深いことですが、私にはできません。)

(どの Linux ディストリビューションを使用していますか?)

更新:

この質問に対するこの回答は、実行ビットが実際に必要なシステムの例 (HP-UX) を示しています。一部のディストリビューションは実行ビットを設定し (おそらく歴史的な慣性から)、他のディストリビューションはそうではありません。あるいは、一部の Linux では実際にそれが必要な場合もあります。

別のデータ ポイント:私の Ubuntu システムでは、独自の共有オブジェクト ファイルを作成しようとしました。生成された「libfoo.so」ファイルは実行権限で作成されましたが、手動で chmod -x それを使用するプログラムは引き続き動作します。

いずれにせよ、*.so に実行権限を設定します。 files はほとんど無害です (そして、たとえば、ソース ファイルに実行権限を設定することの煩わしさは確かに少なくなります)。

更新 2:

fwyzard がコメントで指摘しているように、いくつかの *.so ファイルは実際に実行できます。たとえば、現在のシステムで /lib/x86_64-linux-gnu/libc-2.27.so を実行すると、 GNU C ライブラリのバージョン情報を出力します。 /lib/x86_64-linux-gnu/libpthread-2.27.so 同様に動作します。


Linux
  1. スクリプトを実行するために、パターンに一致するファイルがあるかどうかをテストしますか?

  2. Rmが読み取り専用ファイルを削除できるのはなぜですか?

  3. ファイルが画像であるかどうかを判断するためのスクリプト?

  1. 実行可能ファイルがない場合

  2. .runファイルとは何ですか?

  3. マネージドクラウドソリューションがますます人気を博している理由

  1. .o ファイルと .a ファイル

  2. ls と grep を使用して実行可能ファイルを見つける

  3. Unix ファイル システムのファイル モードで「実行」ビットが必要なのはなぜですか?