Linux マシンに root としてログインしました。C++のバイナリ ファイルを実行しようとすると、test
「Permission denied」というエラーが発生します。を使用してバイナリ(テスト)に許可を与えていますが、chmod +x test
.
ありがとう
ファイル test が別のマウント ポイントにあり、そのマウント ポイントが noexec フラグでマウントされている場合、そのマウント ポイントでバイナリを実行することはできません。
マウントのマンページから:
noexec Do not allow direct execution of any binaries on the mounted filesystem.
次のコマンドを使用して、マウント ポイントがマウントされているフラグを確認できます。
mount -l
バイナリtest
がディレクトリ /dir1/dir2 にある場合は、次のいずれかを実行します (絶対パスを使用)。
/dir1/dir2/test
または、プログラムを含むディレクトリに移動し、./
プレフィックス (相対パス)を使用します。
cd /dir1/dir2
./test
ls -l /path/to/your/file
の後にコマンドを試してくださいchmod +x /path/to/your/file
。
その後、実行可能ビットxが存在するかどうかを確認します。つまり、出力される最初の文字列を調べます-rwxrwxr-x
。
3つがなければ、 chmodx
に問題があります。おそらくあなたはルートではありません。
持っているx
がプログラムを実行できない場合、問題はプログラムへの呼び出しにあります。cd
プログラムが配置されているフォルダーに移動してから、のように実行する必要があり
ます./program_name
。
コードよりも前にパスにある可能性がある「test」というコマンドがあります。これが、おそらく/usr/bin/testにある「test」ではなく「./test」と入力する理由です。 . (「どのテスト」でシステムを調べるか)
テストソフトウェアがパラメーターを取り、(私のシステムで)/usr/bin/testに実行できないコマンドを与えていない限り、/usr/bin/testがそのエラーで失敗する理由はわかりません。
テストと呼ばれておらず、パスの問題でもない場合は、コードとビルドの詳細を投稿していただけますか?