我有一个 C 文件 heapsort.c 我试图在 64 位 linux 机器上编译以输出相应的汇编代码。我使用以下命令:
gcc -02 -S heapsort.c
当我键入此内容时,我收到此错误消息
gcc:error: unrecognized option '-02'
我试着用谷歌搜索这个错误,但没有任何帮助。有关如何导航此错误并获得 x86 输出的任何建议?
标志是-O2
,不是-02
。那是O
“优化”的字母,而不是数字0
。您可能想考虑使用使差异更加明显的字体。
它应该是 -O2 与 'O' 不是“零”
尝试-O2
代替-02
. 它是一个字母“O”,是“优化级别 2”的简写。
我什至建议(因为每个指出的是字母O
而不是数字0
)
gcc -O2 -fverbose-asm -S heapsort.c
这-fverbose-asm
将在程序集文件中为您提供更多生成的注释heapsort.s
顺便说一句,传递-Wall
给 GCC 始终是一个好习惯。
如果您真的很好奇并想了解更多 GCC 内部的表示,请尝试
gcc -fdump-tree-all -O2 -S heapsort.c
但要准备好获取大量文件。
你会得到数百个,匹配heapsort.c.*
!
如果您想要一些粗略的 GUI 界面来查询任意源代码位置的 Gimple 内部表示,请考虑使用MELT。MELT 主要是一种高级领域特定语言(具有类似 Lisp 的语法、强大的模式匹配、面向对象、函数式、动态类型等)来扩展 GCC,但您也可以使用它的(粗略的)探针来扩展 GCC交互式查询一些 GCC 内部表示。