如果不提供 ".exe",Cmd 无法运行我的可执行文件

标签 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”来运行它。这仅发生在我的程序中。是的,路径文本确实包含 .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

最佳答案

事实证明问题不在于 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>

关于如果不提供 ".exe",Cmd 无法运行我的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546760/

相关文章:

windows - Visualstudio 联编文件 (NMAKE)

windows - 使用批处理脚本自动将最新文件复制到文件夹

c++ - 为什么 sizeof 表达式不是 2、4、8 等编译时常量?

C 将 char 视为字母,而不是单字节整数

.net - 使用 C# 创建 Windows 任务运行一次并立即删除

java - 使用 Windows 10 和命令行启动 Hadoop 2.7.1 : ERROR the system cannot find the file hadoop

batch-file - 批处理脚本未关闭

c - 重新分配动态分配的结构

arrays - 为什么我的堆栈实现中的 `push()` 无法正常工作?

windows - 在为 Windows 设置 Git 时改变了我对 PATH 的看法