'.'未被识别为内部或外部命令

'.' is not recognized as an internal or external command

本文关键字:命令 内部 外部 识别      更新时间:2023-10-16

我刚开始学习C++,我一直在尝试使用以下命令从命令行运行我的程序:

g++ helloworld.cpp

哪个有效,然后我输入

./a.out

然后它返回错误"."未被识别为内部或外部命令。我尝试做a.out,但它返回:

"a.out"不被识别为内部或外部命令。

我对命令行很陌生,所以这可能是一个新手问题。我正在使用 gnu gcc 编译器。我的代码只是用于打印"helloworld"的简单代码,代码似乎没有问题,因为行g++ helloworld.cpp不会引发任何错误。补充一点,我使用的是Windows 8。

我最好的猜测是 a.out 不在您的目录中。通常,从命令行编译程序时,添加 -o 标志并命名可执行文件(如 helloworld.exe )。然后,您将确保实际正在创建该名称的可执行文件。

在您的情况下,由于您很可能正在运行 Windows,而没有指定-o标志,因此默认值为 a.exe 而不是a.out,因此当您使用 ./a.out 时,该可执行文件不存在。 在这种情况下,您可以通过键入 aa.exe 来运行程序。 您不需要Windows上的领先./

./a.out

如果你在*NIX世界,使用linux或任何其他UNIX相关平台.(dot) 表示当前目录,a.out 是可执行文件。

ls -l a.out 

列出其权限并确保它具有可执行权限。如果没有使用以下命令授予权限;通常它应该在您生成 a.out 文件时具有。

chmod 755 a.out

如果文件不在当前目录中,请使用绝对路径调用可执行文件

<absolute_path>/a.out

如果您已处理上述所有标准,它应该可以工作。

在 Windows 世界中,"\" 用于分隔文件和目录:

C:WindowsSystem32Etc

但是,大多数其他操作系统和 Web 都使用"/"

file:///c/windows/system32/etc
/etc/motd

在Unix中,"."指的是当前目录,Windows/DOS大多支持这个目录。

基于 Unix 的编译器希望您为编译指定输出文件名,默认值为"a.out"。但是你可以用"-o"覆盖它

g++ test.cpp -o test.exe

这会在当前目录中创建一个名为"test.exe"的文件。如果您使用的是MinGW的"bash"命令行,您应该能够通过键入以下内容来运行上述可执行文件:

./test.exe   # note: no spaces!

在"$"提示符下

$ ./test.exe

但是,如果您在目录中,请在 DOS 命令提示符下说C:Dev,这将不起作用。DOS认为'/'的意思是"参数的开始":

C:Dev> dir /w

输出"宽"格式目录

因此,如果您使用的是DOS,则只需键入:

test.exe

.test.exe

例如

C:Dev> test.exe
C:Dev> .test.exe
C:Dev> c:devtest.exe

或者如果您依赖"a.out"

C:Dev> a.out
C:Dev> .a.out