无法使用指定的优化命名可执行文件

时间:2015-02-13 13:57:13

标签: c gcc 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

但我没有运气。

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

这是-o标志:

 gcc -O0 -o Problem04b Problem04b.c

答案 1 :(得分:4)

要指定输出文件,您需要将-o <filename>选项与gcc一起使用。

注意:请注意小写

在你的情况下,它应该是

gcc -O0 -o Problem04b Problem04b.c

供参考:来自gcc manual

  

-o file

     

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

答案 2 :(得分:1)

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

进行编译
 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的章节。