• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:gcc@MinGW:外部コマンドの起動)

gcc@MinGWで外部コマンドの起動に問題がある

このQ&Aのポイント
  • MSYS2/MinGW64 on Windows10 の環境で gcc 開発をしています。gcc@MinGWで外部コマンドを起動する際に問題が発生しています。
  • /usr/bin/ls コマンドを使って外部コマンドを起動しようとすると、存在しないというエラーメッセージが表示されます。
  • 問題が発生する理由や、同じソースを /usr/bin/gcc でコンパイルすると正常に動作する理由について詳しい情報を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>明らかに存在するはずの ls コマンドが起動されません 「明らかに存在するはず」と書かれていますが、 MSYS2環境のbashで確認されたのではないでしょうか。 エラーメッセージの >/usr/bin/ls' は、内部コマンドまたは外部コマンド、 >操作可能なプログラムまたはバッチ ファイルとして認識されていません。 はcmd.exeが出力してるメッセージに思えます。 cmd.exeで'/usr/bin/ls'は起動できないのではありませんか? /usr/bin/gccでコンパイルした場合と/mingw64/bin/gccでコンパイルした場合で動作が異なるのは使用しているライブラリが異なりsystem関数の実装が異なるのではないでしょうか。

yshwaki
質問者

お礼

回答ありがとうございます。 どうも、ご指摘のとおりのような気がします。 試しに cmd.exe から /usr/bin/ls を叩くと、当該現象と全く同じメッセージが表示されます。 cmd.exe が表示しているメッセージなら cp932 コードであるのもうなずけます。 cmd.exe 環境下で /usr/bin/ls が存在しないのは当たり前ですが、MinGW の gcc でビルドしたときの system 関数は外部シェルとして Windows の cmd.exe を利用する、ということは全く想定外でした。 MinGW でビルドされた実行形式ファイルは、MSYS や MinGW がインストールされていない Windows 環境でも実行できるように設計されている、ことによるのですね。

関連するQ&A