我刚刚开始学习C ++,我一直试图从命令行运行我的程序:
g++ helloworld.cpp
哪个有效,然后我输入
./a.out
然后它返回错误'。'不被视为内部或外部命令。
我尝试了a.out
,但它返回:
' a.out的'不被视为内部或外部命令。
我对命令行很新,所以这可能是一个相当新手的问题。我正在使用gnu gcc编译器。我的代码只是一个简单的打印代码" helloworld",它似乎不是代码的问题,因为行g++ helloworld.cpp
不会引发任何错误。只是添加,我使用的是Windows 8。
答案 0 :(得分:2)
我最好的猜测是a.out不在您的目录中。通常,在从命令行编译程序时,添加-o
标志并命名可执行文件(如helloworld.exe
)。然后,您将确保实际创建了该名称的可执行文件。
在您的情况下,由于您最有可能在未指定-o
标记的情况下运行Windows,因此默认为 a.exe ,而不是 a.out < / strong>,所以当您使用./a.out
时,该可执行文件不存在。在这种情况下,您可以通过键入a
或a.exe
来运行您的程序。您不需要Windows上的前导./
。
答案 1 :(得分:0)
./a.out
如果你在* NIX世界,使用linux或任何其他UNIX相关平台 。(点)表示当前目录,a.out表示可执行文件。
ls -l a.out
列出其权限并确保其具有可执行权限。如果它没有使用以下命令给它许可;通常在生成a.out文件时应该有。
chmod 755 a.out
如果您的文件不在当前目录中,请使用绝对路径来调用可执行文件
<absolute_path>/a.out
如果您已经注意上述所有标准,它应该有效。
答案 2 :(得分:0)
在Windows世界中,“\”用于分隔文件和目录:
C:\Windows\System32\Etc
但是,大多数其他操作系统和网络都使用“/”
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
e.g。
C:\Dev\> test.exe
C:\Dev\> .\test.exe
C:\Dev\> c:\dev\test.exe
或者如果你依赖“a.out”
C:\Dev\> a.out
C:\Dev\> .\a.out