Sam*_*ari 1 c assembly gcc compilation
我想将多个C文件编译为单个汇编文件(它们是互连的,当您编译它时,您将有一个二进制文件).GCC有可能吗?
例如,看看这个回购.make文件将生成一个文件(二进制文件).
但是我想将它们编译为汇编,检测代码然后将它们编译为二进制文件.显然,如果我将所有汇编文件放在一个*.s文件中,对我来说会更容易.
任何的想法?
我看到三种方法:
使用cat
以连接组件文件.除非两个或多个翻译单元使用具有相同名称的静态变量,否则这应该有效.如果标签使用两次,这可能会有问题.您可以使用这样的sed脚本预处理单个文件,以使标签具有唯一性:
s/\.L\([[:alnum:]]*\)/.L$ident\1/
Run Code Online (Sandbox Code Playgroud)
where $ident
是每个程序集文件的唯一字符串.这变成.Lfoo
了.Lidentfoo
.
创建一个看起来像这样的C源文件并编译它,与以前一样需要注意:
#include "module1.c"
#include "module2.c"
...
#include "modulen.c"
Run Code Online (Sandbox Code Playgroud)用于ld -r
对一组目标文件执行部分链接.这将为您提供一个包含其他文件内容的大对象文件.然后,您可以使用工具objconv
来反汇编目标文件,检测并重新组装.请注意,这可能不是您需要的.