我对 C++ 非常陌生,并且使用命令提示符。
我有多个 .cpp 和 .h 文件,它们在运行 GNU GCC 作为编译器的 IDE (Code::blocks) 上运行良好。它也显示我需要的内容,但是当我尝试使用命令提示符并键入“g++ file1.cpp file2.cpp ....”然后“./a.out”
我收到错误“'。'不被识别为内部或外部命令、可操作程序或批处理文件。” 我有 cygwin64,并安装了正确的 g++、cdb、make 软件包和路径设置。
我搞砸了什么?
在命令提示符中,您只需添加可执行文件名(例如
out.exe
)
在 powershell 中运行可执行文件,如
.\out.exe
。
命令:
g++ -c [source file].cpp produces object file [source file].o
命令:
g++ -o [executable file] [object file].o produces object file [executable]
例如,一步将
"hello.cpp"
编译为可执行文件"hello.exe"
并运行它:
Z:\cpp> g++ -o hello.exe hello.cpp Z:\cpp> hello.exe
使用目标文件创建
exe
文件:
Z:\cpp> g++ -c file1.cpp Z:\cpp> g++ -c file2.cpp Z:\cpp> g++ -o out.exe file1.o file1.o Z:\cpp> out.exe
我猜您正在遵循专为 Linux 等类 Unix 系统设计的食谱或教程,但您使用的是 Windows。
在Linux中,字符
.
表示当前目录,而正斜杠/
是目录分隔符。所以,这个:
./a.out
指当前目录下名为
a.out
的文件。
在 Windows 中,
.
仍然指当前目录,但不是使用正斜杠,而是使用反斜杠 \
来分隔目录。所以,这个:
.\a.out
指当前目录下名为
a.out
的文件。
但这仍然不是答案:在 Linux 上,如果不另外指定,g++ 命令将生成一个名为
a.out
的可执行文件(名字很奇怪,但由于历史原因而这样命名)。然而,在 Windows 下,这不是可执行文件的有效名称,因为 Windows 要求可执行文件以 .exe
结尾。因此,如果您不另外指定,可执行文件将被命名为:
a.exe
还有一个区别:在 Windows 中,路径默认包含当前目录,因此您甚至不需要指定前面的
.\
。
如果您使用的是 类 Unix 操作系统(例如 Linux 或 macOS),则可以通过在 a.out 所在目录的终端中键入 ./a.out 来执行编译后的程序。确保在运行命令之前导航到正确的目录。
如果您使用Windows,则应使用./a.exe 而不是 ./a.out来执行程序,假设编译后的程序名称为a.exe。此外,在运行命令之前,请确保您位于命令提示符中的正确目录中。