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



在编译我在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手册

-o文件

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

实际上,您也希望得到警告(这不会改变生成的可执行文件,但对您非常有帮助),所以使用进行编译

 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文档中关于调用GCC的章节。

相关内容

  • 没有找到相关文章