実現したいこと
vscodeとMinGWでC++でhelloworldを出力したい
前提
下記のコードをhello.cppとしてc:\Users\PC_Userに保存してあります
minGWはmingw32-baseとmingw32-gcc-g++をapplyしてあります
VSCodeはC/C++という拡張を入れています。その他の拡張は入れていません
g++ -o hello hello.cpp
./hello.exe
とVSCodeのターミナルに打ったら以下のエラーが出ました
発生している問題・エラーメッセージ
./hello.exe : 用語 './hello.exe' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + ./hello.exe + ~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (./hello.exe:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
該当のソースコード
C++
1#include <iostream> 2 3using namespace std; 4 5int main() 6{ 7 cout << "hello world." << endl; 8 return 0; 9}
試したこと
g++ -o hello hello.cppをg++ -o hello.exe hello.cppに変更 → 変化なし
dirした → 2023/03/19 には -a---- 2023/03/19 13:45 115 hello.cpp のみ
> g++ -o hello hello.cpp
この直後に dir し、できたファイル名を確認してみて。 hello? それとも hello.exe? ほかのなにか?
115 hello.cppというファイルしかないです
だったら ./hello.exe だろうが .\hello.exe だろうが起動できんでしょうね。
まさかとは思うけど コンパイル失敗してませんよね?
もしかしてあれかなぁ...不正ソフトウェア対策プログラムがexeを消しちゃってるとか。
gccではあまり聞いたことがないけれど。
exeまでいかないで途中でコンパイルを止めるように、
g++ -c hello.cpp
とした後にdirではどうなってます? これでhello.oができていたらその疑い濃厚ですね。
多分その手のソフトは削除するときにログが残るはずだからそれを確認して(その方法についてはあなたのお使いのソフトのドキュメントを参照してください)、適用除外ができるなら試してみてください(Mcafeeはフォルダ単位での除外が出来ないんだよなぁ...)
g++ -c hello.cppの後にdirしても特に変化ありませんでした
そうすると次は-v (verbose)オプションですかねぇ。
g++ -v hello.cpp ではどんな表示がでる?
あるいは、わざとエラーを埋め込んでちゃんとエラーメッセージが出るか、とか見るのも手がかりになるかも。
#include <iostreamA>
とか
aint main()
とか
g++ -v hello.cpp
↓
Using built-in specs.
COLLECT_GCC=C:\MinGW\bin\g++.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgversion='MinGW.org GCC Build-2'
Thread model: win32
gcc version 9.2.0 (MinGW.org GCC Build-2)
COLLECT_GCC_OPTIONS='-v' '-shared-libgcc' '-mtune=generic' '-march=i586'
c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/cc1plus.exe -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/9.2.0/ hello.cpp -quiet -dumpbase hello.cpp -mtune=generic -march=i586 -auxbase hello -version -o C:\Users\PC_User\AppData\Local\Temp\cc72VtaA.s
cc1でコケてるのかしら。メモリ不足だとコケるみたいな話は時々あるけれど。
ちなみに、正常な動作の例は https://www.loose-info.com/main/varioustests/gcc/test0006.html など。これはCなのでcc1を起動していますが、C++ならcc1plusということでしょう。でcc1が立ち上がって
GNU C17 (GCC) version 8.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none
が出るということだと思うのだけど、そこで多分プロセスが強制終了してしまっている?
(結構面倒な事態だと思います)