私はCプログラムを持っていて、それを私の32 Linux Mintで実行可能にしました。宿題の目的で大学のプールコンピュータで動作するかどうかをテストする必要があります。私は正直、そこにどのLinuxディストリビューションがインストールされているのか分かりません。実際にそれを見るのに2分かかりましたが、それが32ビットシステムであることも知っています。
したがって、ターミナル()で実行しようとするとエラーが./program
発生しbash permission denied
、これはファイルが実行可能ではないことを知っているので、chmod u+x program
コマンドを再実行して実行可能にし、動作し、私のプログラムがラップトップで実行されます。
その理由が何であるかを知っている人はいますか?私の言うことは、少なくとも私のLinuxミントでは私のファイルが実行可能であるということです。なぜ他のLinuxディストリビューションでは実行できないのですか?
たぶん別の方法で実行可能にする必要がありますか?私は前述の人だけを知っていますchmod u+x program
。
修正する:
コメントで述べたように、大学のコンピュータにファイルを転送する方法は、Googleドライブからダウンロードすることです。私はラップトップでテストしていますが、別のシステム(UBUNTU)からGoogleドライブから単一のファイルをダウンロードしようとしましたが、問題は同じです。実行できません。その後、ファイルをタール処理し(Richardが提案したように)、解凍した後、ファイルはすぐに実行可能になりました。したがって、ファイルをタール処理すると、他のシステムでも実行可能でなければならないという結論に至ります。この場合は私の大学です。コンピュータ。
答え1
これを行わなかったため、chmod u+x
Unix以外のファイルシステムはこのデータを保存せず、ファイルの外部にあります。実行ビットはgoogle-driveにコピーされません。だから再び走らなければなりませんchmod
。
コンパイルされたコンピュータでは、chmod
コンパイラはこれを実行するため、実行する必要はありません。
Unixエコシステム内に保管する限り、そのx
部分はそのまま残ります。ただし、google-driveはUnixではありません(Unixでは実行されますが)。tar
すべてのメタデータとともに、多数のファイル/ディレクトリを単一のファイルにラップできるプログラムです。