Cmd无法在不提供“ .exe”的情况下运行我的可执行文件

时间:2018-11-29 20:06:29

标签: c windows cmd mingw-w64

因此,我已经使用mingw gcc编译器编译并链接了一个名为“ embed.exe”的程序,但是cmd要求我使用“ embed.exe”而不是“ embed”来运行它。

D:\c\embed\bin\release>embed
'embed' is not recognized as an internal or external command,
operable program or batch file.

D:\c\embed\bin\release>embed.exe  
Usage: embed [-h] <input>

我希望只能通过键入“ embed”来运行它。这只发生在我的程序上。是的,pathext确实包含.exe。
因此,这使我认为mingw输出存在问题,如果我未指定.exe的话,cmd可能无法识别它是exe。

这是我所有的编译器标志:

-std=gnu11 -march=x86-64 -msse3 
-Werror -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces 
-Wno-missing-field-initializers -Wpedantic -Wno-format 
-flto 
-g -D_DEBUG -DDEBUG -Og 
-Wl,-subsystem,console

2 个答案:

答案 0 :(得分:1)

结果发现问题不在于mingw,而在于我如何创建bin目录。 当我在Windows上使用 bash 来对目录进行mkdir时,会发生问题,但是如果我使用Windows的mkdir,则可以使用。谁会想到...

如何重现该错误:

目录:

embed
    |-->main.c

将CD嵌入目录。

> gcc -c main.c -o main.o
> bash -c "mkdir bin"
> gcc -o bin/embed.exe main.o -Wl,-subsystem,console
> cd bin
> embed
'embed' is not recognized as an internal or external command,
operable program or batch file.

将CD复制回来并删除bin

> mkdir bin
> gcc -o bin/embed.exe main.o -Wl,-subsystem,console
> cd bin
> embed
Usage: embed [-h] <input>

答案 1 :(得分:-1)

在PATHEXT上阅读。 。 。这是一个可选的CMD环境变量,将在这里为您提供帮助。

实际上,鉴于* .EXE文件不起作用,我猜您可能已经具有该变量,并且列表中不包含EXE。

坦率