おそらく歴史的な理由だけだと思います.
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
同様に動作します。