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

C 无法命名具有指定优化的可执行文件,c,gcc,optimization,C,Gcc,Optimization,在linux上使用gcc编译器编写c代码时,我必须关闭优化。我发现我可以编译代码,但是我只能在没有指定默认为a.out的可执行文件名的情况下编译代码 所以这是可行的: gcc -O0 Problem04b.c 但我的问题是我必须提交这个作业,我不能提交一个名为a.out的可执行文件,因为我的导师需要知道它是哪个问题。我意识到我可能可以跑了 cp a.out Problem04b 然后 但是我想知道是否有一种方法可以直接将代码编译成可执行的Problem04b。我尝试过这样运行命令: gcc

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

所以这是可行的:

gcc -O0 Problem04b.c
但我的问题是我必须提交这个作业,我不能提交一个名为a.out的可执行文件,因为我的导师需要知道它是哪个问题。我意识到我可能可以跑了

cp a.out Problem04b
然后

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

gcc -O0 Problem04b Problem04b.c
但是我没有运气

感谢您的帮助。

这是-o标志:


要指定输出文件,您需要在gcc中使用-o选项

注意:请注意这里的小写字母

对你来说,应该是这样

gcc -O0 -o Problem04b Problem04b.c
供参考:来自

-o文件

将输出放在文件中。这适用于正在生成的任何类型的输出,无论是可执行文件、对象文件、汇编文件还是预处理的C代码


实际上,您还希望得到不会更改生成的可执行文件的警告,但这对您非常有帮助,因此使用

 gcc -O0 -Wall -Wextra Problem04b.c  -o Problem04b
-Wall选项要求提供几乎所有警告,-Wextra选项要求提供更多警告

要运行您的东西,/很有用,因为可能存在路径问题:

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

 gcc -Wall -Wextra Problem04b.c  -o Problem04b
如果您想要真正的优化,例如用于基准测试,请使用-O1或-O2或-O3

那么,您可能希望使用调试信息进行编译

 gcc -g -Wall -Wextra Problem04b.c  -o Problem04b
当然,您需要学习如何使用调试器。因此,请阅读一些有关这方面的教程,然后键入

 gdb ./Problem04b
您将得到一个gdb提示。在那个时候试着帮忙


您可能想阅读关于GCC文档的章节。

为什么否决?我确实提供了其他答案中没有提供的有用信息!我不知道,但可能是因为没有解释您提到的开关。您可以使用而不是cp+rm重命名文件:
 gcc -Wall -Wextra Problem04b.c  -o Problem04b
 gcc -g -Wall -Wextra Problem04b.c  -o Problem04b
 gdb ./Problem04b