Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 修改Makefile以生成程序集_Assembly_Makefile - Fatal编程技术网

Assembly 修改Makefile以生成程序集

Assembly 修改Makefile以生成程序集,assembly,makefile,Assembly,Makefile,我想修改一个Makefile来生成相应的汇编指令。Makefile和代码存储库位于此处: 但是,将-S添加到CFLAGS原语不会产生所需的行为 我错过了什么 问候 简化的Makefile(省略了一些行) 要构建的内容::全部 -包括local.mk 工具链?=臂eabi- 董事会?=熊猫 目标_CC:=$(工具链)gcc 目标\u LD:=$(工具链)LD 目标对象复制:=$(工具链)对象复制 TARGET_OBJDUMP:=$(工具链)OBJDUMP TARGET_CFLAGS:=-g-S-

我想修改一个Makefile来生成相应的汇编指令。Makefile和代码存储库位于此处:

但是,将
-S
添加到
CFLAGS
原语不会产生所需的行为

我错过了什么

问候

简化的Makefile(省略了一些行)

要构建的内容::全部
-包括local.mk
工具链?=臂eabi-
董事会?=熊猫
目标_CC:=$(工具链)gcc
目标\u LD:=$(工具链)LD
目标对象复制:=$(工具链)对象复制
TARGET_OBJDUMP:=$(工具链)OBJDUMP
TARGET_CFLAGS:=-g-S-Os-Wall
TARGET_CFLAGS+=-march=-march=armv7-a+sec-fno内置-ffreestanding
目标值+=-I.-I包括
TARGET\u CFLAGS+=-包含配置(BOARD).h
TARGET\u LIBGCC:=$(shell$(TARGET\u CC)$(TARGET\u CFLAGS)-打印LIBGCC文件名)
主机外壳:=-g-S-O2-壁
主机\u CFLAGS+=-Itools
OUT:=OUT/$(电路板)
OUT_HOST_OBJ:=$(OUT)/主机OBJ
OUT\u TARGET\u OBJ:=$(OUT)/目标OBJ
全部:=
包括build/rules.mk
M_NAME:=usbboot
M_OBJS:=tools/usbboot.o
M_OBJS+=tools/usb_linux.o
M_OBJS+=2ndstage.o
包括build/host-executable.mk
M_NAME:=mkheader
M_OBJS:=tools/mkheader.o
包括build/host-executable.mk
M_名称:=bin2c
M_OBJS:=tools/bin2c.o
包括build/host-executable.mk
M_NAME:=aboot
M_基:=0x40309000
M_OBJS:=arch/omap4/start.o
M_OBJS+=arch/omap4/serial.o
包括build/target-executable.mk
$(OUT)/aboot.ift:$(OUT)/aboot.bin$(OUT)/mkheader
@回波产生$@
@./$(OUT)/mkheader$(TEXT_BASE)`wc-c$(OUT)/aboot.bin`>$@
@cat$(OUT)/aboot.bin>>$@
全部+=$(输出)/aboot.ift
$(OUT\u HOST\u OBJ)/2ndstage.o:$(OUT)/aboot.bin$(OUT)/bin2c
@回波产生$@
$(安静)。/$(输出)/bin2c aboot<$(输出)/aboot.bin>$(输出)/2ndstage.c
gcc-c-o$@$(输出)/2ndstage.c
清洁::
@回声清洁
@rm-rf$(输出)
全部::$(全部)`

-S
是传递给编译器以生成可装配代码的正确标志

您应该确保编译代码的实际规则包括
CFLAGS
,如下所示:

gcc $(CFLAGS) $@ file.c

从我的Makefile中,根据需要进行调整。通常也有C部分,因为我主要使用asm来编写文档。我画了那条线

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
        @mkdir -p `dirname $@`
        $(CC) $(CXXFLAGS) -S $< -o $(OBJDIR)/$*.asm $(INCLUDE_PATHS) -masm=intel
        $(CC) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATHS)   <--- this is for normal compilation
$(OBJDIR)/%.o:$(SRCDIR)/%.cpp
@mkdir-p`dirname$@`
$(CC)$(cxflags)-S$<-o$(OBJDIR)/$*.asm$(包含路径)-masm=intel

$(CC)$(cxflags)-c$<-o$@$(包括路径)我不知道我缺少什么,但它不会生成*.S文件。您能复制并粘贴问题中的makefile的简化版本吗?
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
        @mkdir -p `dirname $@`
        $(CC) $(CXXFLAGS) -S $< -o $(OBJDIR)/$*.asm $(INCLUDE_PATHS) -masm=intel
        $(CC) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATHS)   <--- this is for normal compilation