在编译我在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的章节。