无法命名具有指定优化的可执行文件

Can't name executable with specified optimization

在 linux 上使用 gcc 编译器编译我编写的 c 代码时,我必须关闭优化。我发现我可以编译代码,但我只能在没有指定可执行文件名称的情况下编译代码(默认为 a.out)。

所以这有效:

gcc -O0 Problem04b.c

但我的问题是我必须提交此作业,但我无法提交名为 a.out 的可执行文件,因为我的讲师需要知道它是哪个问题。我意识到我可能只能 运行

cp a.out Problem04b

然后

rm a.out

但我想知道是否有一种方法可以直接将代码编译成可执行文件 Problem04b。我试过 运行 这样的命令:

gcc -O0 Problem04b Problem04b.c

但我运气不好。

感谢您的帮助。

这是 -o 标志:

 gcc -O0 -o Problem04b Problem04b.c

要指定输出文件,您需要使用 -o <filename> 选项和 gcc

注意:请注意这里的小写

你的情况应该是

gcc -O0 -o Problem04b Problem04b.c

供参考:来自gcc manual

-o file

Place output in file file. This applies to whatever sort of output is being produced, whether it be an executable file, an object file, an assembler file or preprocessed C code.

其实你也想得到警告(不会改变生成的可执行文件,但对你很有帮助),所以编译

 gcc -O0 -Wall -Wextra Problem04b.c  -o Problem04b

-Wall 选项要求几乎所有警告,-Wextra 选项要求更多警告。

给运行你的东西(./很有用,因为可能有PATH问题):

 ./Problem04b

请注意 -O0 是可选的(因为它是默认值),您可以将其删除。

 gcc -Wall -Wextra Problem04b.c  -o Problem04b

如果你想要真正的优化,例如对于基准测试,使用例如-O1-O2-O3

你可能想用调试信息编译,然后

 gcc -g -Wall -Wextra Problem04b.c  -o Problem04b

当然,您需要学习如何使用 GDB 调试器。所以阅读一些关于它的教程,然后输入

 gdb ./Problem04b

您将收到 (gdb) 提示。到时候试试help

您可能想阅读 GCC 文档中有关 invoking GCC 的章节。