ホームページ  >  記事  >  バックエンド開発  >  「go run」を含む Makefile コマンドで許可拒否エラーが発生するのはなぜですか?

「go run」を含む Makefile コマンドで許可拒否エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-23 17:01:02234ブラウズ

Why Do Makefile Commands Involving

Go を使用すると Makefile で権限拒否エラーが発生します

「go run 」を正常に実行したにもかかわらず。直接的には、ユーザーが Makefile 経由で同じコマンドを実行するために「make run」を呼び出すと、アクセス許可拒否エラーが発生します。 「make -d」デバッグ出力で明らかなように、この不一致は GNU make 内の微妙な点に起因している可能性があります。

問題は、GNU make が go 実行可能ファイルを見つけようとしたときに発生します。 「go」という名前のディレクトリが、PATH 環境変数で指定されたディレクトリ (実行可能ファイルを含む実際のディレクトリよりも前) に存在する場合、GNU make は、実行可能ファイルではなく、誤ってこのディレクトリをターゲットにします。

たとえば、ディレクトリ「/usr/bin/go/」が存在し、「/usr/bin」が PATH にある場合、GNU make は「go run .」を実行しようとすると、アクセス許可拒否エラーが発生します。この問題を解決するには、PATH に「go」サブディレクトリを持つディレクトリが含まれていないことを確認してください。

問題のあるディレクトリを PATH から削除することが不可能な場合は、GNU make に次のコマンドを追加してシェルを呼び出すように指示できます。セミコロン「;」 Makefile ターゲット定義に追加します。これにより、go 実行可能ファイルが適切に解決され、アクセス許可拒否エラーが解決されます。

run:
    go run . ;

以上が「go run」を含む Makefile コマンドで許可拒否エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。