【发布时间】:2021-03-29 18:30:56
【问题描述】:
当我跑步时
$ gcc hello.c
$ ./a
Hello, World.
我不知道./a 到底是什么意思。
这是什么?它代表什么?
如果你知道它的含义,我真的很感激你能分享。
【问题讨论】:
当我跑步时
$ gcc hello.c
$ ./a
Hello, World.
我不知道./a 到底是什么意思。
这是什么?它代表什么?
如果你知道它的含义,我真的很感激你能分享。
【问题讨论】:
./ 是使用类 Unix shell(如 bash)时的当前目录。GCC 生成的可执行文件的名称是 a.exe。
所以要运行生成的可执行文件,您需要指定到它的路径,在本例中为“当前目录”,即./,以及可执行文件的名称,即a.exe。由于在 Windows 上运行可执行文件时可以省略 .exe,而不是 ./a.exe,您可以使用 ./a 运行它。
如果您要使用 Windows 命令行 shell(如 cmd.exe 或 PowerShell),您只需键入 a,因为当前目录(在这种情况下为 .\,Windows 使用 \ 而不是/ 用于目录分隔符)默认搜索可执行文件。 Unix shell 不需要,这就是为什么你需要./。
如果你想给生成的可执行文件一个不同的名字,例如hello.exe,你可以:
gcc hello.c -o hello.exe
然后你会运行它:
./hello
或:
./hello.exe
【讨论】:
.a 是编译程序的标准/默认输出,当没有提供输出名称时。
当你编译了C程序并且没有给输出文件命名时,gcc会自动将输出文件名设置为a。
当没有提供输出名称时,最后编译的 C 程序的文件名将被覆盖。
这个标准在 Unix 和 Windows 中都是一样的。
要设置输出程序的名称,请使用-o 参数,后跟输出名称sum_program
gcc sum_program.c -o sum_program
根据库的使用和其他链接器,可以添加额外的参数,如 -o 进行编译。
【讨论】: