在linux中从C文件生成汇编代码
我想知道如何使用Unix从C程序生成汇编代码。 我尝试了gcc:在linux中从C文件生成汇编代码,c,unix,gcc,C,Unix,Gcc,我想知道如何使用Unix从C程序生成汇编代码。 我尝试了gcc:gcc-c file.c 我还先使用了cpp,然后尝试使用as,但我遇到了错误 我正试图从3个不同的程序中构建一个汇编程序 程序1.c程序2.c程序h 执行gcc-S prog1.c prog2.c prog.h是否正确? 看来这是不对的。我不知道是否必须从它们中生成汇编程序,然后链接它们 谢谢根据手册: `-S' Stop after the stage of compilation proper; do not ass
gcc-c file.c
我还先使用了cpp
,然后尝试使用as
,但我遇到了错误
我正试图从3个不同的程序中构建一个汇编程序
程序1.c程序2.c程序h
执行gcc-S prog1.c prog2.c prog.h是否正确?
看来这是不对的。我不知道是否必须从它们中生成汇编程序,然后链接它们
谢谢根据手册:
`-S'
Stop after the stage of compilation proper; do not assemble. The
output is in the form of an assembler code file for each
non-assembler input file specified.
By default, the assembler file name for a source file is made by
replacing the suffix `.c', `.i', etc., with `.s'.
Input files that don't require compilation are ignored.
因此,请从以下位置尝试gcc-S file.c
:
如果您使用的是gcc(看起来),那么它就是gcc-s
如果需要,不要忘记使用-I指定include路径
gcc -I ../my_includes -S my_file.c
您将获得带有汇编程序说明的my_file.s。objdump-d也可以很好地工作,并将为您提供整个二进制文件(exe或共享库)的汇编列表 这比使用编译器生成的asm要清楚得多,因为对同一源文件中函数的调用可能显示为尚未解析到其最终位置
使用-g构建代码,还可以向objdump标志添加--line和/或--source并考虑使用标志-FVBBOSE ASMY,您应该从必须编译的文件列表中删除PROG.H。但是我需要包括头,我怎么做?头文件应该包含在C文件中。标头包含重要的C语言语句,但它们并不构成完整的程序。它们的目的是帮助您避免反复复制大量样板文件。而是将它放在头文件中,并将其包含在C文件中。
gcc -I ../my_includes -S my_file.c