在编译我在linux上使用gcc编译器时编写的c代码时,我必须关闭优化。我发现我可以编译代码,但我只能在没有指定可执行文件名的情况下编译代码(默认为a.out)。
这样可行:
gcc -O0 Problem04b.c
但我的问题是我必须提交此作业,我无法提交名为a.out的可执行文件,因为我的教师需要知道它是哪个问题。我意识到我可能只是运行
cp a.out Problem04b
然后
rm a.out
但是我想知道是否有一种方法可以直接将代码编译成可执行的Problem04b。我试过像这样运行命令:
gcc -O0 Problem04b Problem04b.c
但我没有运气。
感谢您的帮助。
答案 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的章节。