./a.输出结果'.'不被识别为内部或外部命令、可运行程序或批处理文件

问题描述 投票:0回答:3

我对 C++ 非常陌生,并且使用命令提示符。

我有多个 .cpp 和 .h 文件,它们在运行 GNU GCC 作为编译器的 IDE (Code::blocks) 上运行良好。它也显示我需要的内容,但是当我尝试使用命令提示符并键入“g++ file1.cpp file2.cpp ....”然后“./a.out”

我收到错误“'。'不被识别为内部或外部命令、可操作程序或批处理文件。” 我有 cygwin64,并安装了正确的 g++、cdb、make 软件包和路径设置。

我搞砸了什么?

c++ command command-prompt
3个回答
3
投票

命令提示符中,您只需添加可执行文件名(例如

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

3
投票

我猜您正在遵循专为 Linux 等类 Unix 系统设计的食谱或教程,但您使用的是 Windows。

在Linux中,字符

.
表示当前目录,而正斜杠
/
是目录分隔符。所以,这个:

./a.out

指当前目录下名为

a.out
的文件。

在 Windows 中,

.
仍然指当前目录,但不是使用正斜杠,而是使用反斜杠
\
来分隔目录。所以,这个:

.\a.out

指当前目录下名为

a.out
的文件。

但这仍然不是答案:在 Linux 上,如果不另外指定,g++ 命令将生成一个名为

a.out
的可执行文件(名字很奇怪,但由于历史原因而这样命名)。然而,在 Windows 下,这不是可执行文件的有效名称,因为 Windows 要求可执行文件以
.exe
结尾。因此,如果您不另外指定,可执行文件将被命名为:

a.exe

还有一个区别:在 Windows 中,路径默认包含当前目录,因此您甚至不需要指定前面的

.\


0
投票

如果您使用的是 类 Unix 操作系统(例如 Linux 或 macOS),则可以通过在 a.out 所在目录的终端中键入 ./a.out 来执行编译后的程序。确保在运行命令之前导航到正确的目录。

如果您使用Windows,则应使用./a.exe 而不是 ./a.out来执行程序,假设编译后的程序名称为a.exe。此外,在运行命令之前,请确保您位于命令提示符中的正确目录中。

© www.soinside.com 2019 - 2024. All rights reserved.