如何解决无法从.elf文件创建.hex文件
当我构建项目时,成功生成了.elf文件,但是缺少.hex和.bin文件。我在互联网上搜索,发现每个人都使用“ OBJcopY -O二进制test.elf test.bin ”命令,但是当我使用它时,它不会出现任何错误。
这是我的makefile文件:
PREFIX?=arm-none-eabi-
CC=$(PREFIX)gcc
OBJcopY=$(PREFIX)objcopy
OD=bin
PROJ_NAME=test
SFLAGS= --static -std=c11 -g3 -Os
SFLAGS+= -fno-common -ffunction-sections -fdata-sections
SFLAGS+= -I./
LFLAGS+=-Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
M7DP_FLAGS= $(SFLAGS) -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16
CFLAGS = -g -O2 -Wall -Tld.stm32.basic
SRCS += main.c
SRCS += stm32h743xx.h
SRCS += startup_stm32h743xx.S
OBJS = $(SRCS:.c=.o)
.PHONY: proj
all: proj
proj: $(PROJ_NAME).elf
$(PROJ_NAME).elf: $(SRCS)
$(CC) $(CFLAGS) $^ -o $@
$(OBJcopY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex
$(OBJcopY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin
clean:
rm -f *.o $(PROJ_NAME).elf $(PROJ_NAME).hex $(PROJ_NAME).bin
$(V).SILENT:
OS:WSL2上的Ubuntu 20
解决方法
首先,尝试单行命令以验证工具链设置:
arm-none-eabi-objcopy -O ihex proj.elf proj.hex
arm-none-eabi-objcopy -O binary proj.elf proj.bin
第二,调试您的makefile,以检查是否已执行了convert命令。
make all -n
示例:
$ cat t1.c
#include <stdio.h>
void _exit(int status) {
}
int main() {
return 0;
}
$ arm-none-eabi-gcc t1.c -o t1.elf
t1.c:在函数“ _exit”中: t1.c:4:1:警告:“ noreturn”功能确实返回 } ^
$文件t1.elf
t1.elf:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,带有debug_info,未剥离
$ arm-none-eabi-objcopy -O二进制t1.elf t1.bin
$ arm-none-eabi-objcopy -O ihex t1.elf t1.hex
$文件t1。*
t1.bin:数据
t1.c:C源代码,ASCII文本
t1.elf:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,带有debug_info,未剥离
t1.hex:ASCII文本,带有CRLF行终止符
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。