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