在keil for arm 编译环境中,axf文件是干啥的?怎么生成的?能修改吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在keil for arm 编译环境中,axf文件是干啥的?怎么生成的?能修改吗?相关的知识,希望对你有一定的参考价值。

百度一下axf 官方文档吧这个一时也说不清楚
简单而言axf是一种文件格式 里面可能包含调试信息和一些链接信息(记得不是很清楚了),keil是直接生成的就是axf,上面那个命令式把axf转换为bin。(上面答得都是上面啊 )
参考技术A 哦 axf文件缺少了一些软件就不能运行,不能修改的,修改就不能运行软件了,希望你能给我最佳答案 参考技术B axf好像是那种电子的选择性的文件!

在用keil编辑的时候提示这两条,怎么都找不出原因。

.objDebugmain.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by lcd.o and main.o)..objDebugmain.axf: Error: L6200E: Symbol main multiply defined (by lcd.o and main.o).请问这是那出现的问题啊。我找了半天也没找到原因。

回复1# yfg123 本质,就是已经定义了两个main函数,自己仔细找一下,看有没有两个定义。解决方法如下:

1、首先打开Keil,新建一个汇编语言文件,在其中输入汇编代码,同时在最开头加入。

2、将汇编源文件进行编译。可以看到,编译结果窗口输出了一连串的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL,每个ERROR都指向REG51.INC。

3、出现这种问题的原因在于REG51.INC对特殊寄存器进行了定义,选择汇编源文件,在弹出的列表中选择“Options for FIle:xxx”,其中xxx是具体的文件名。

4、在弹出的对话框中,找到Special Function Registers,将它下面的Define 8051 SFR Names取消勾选。

5、这时可以看到error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL没有了。

参考技术A multiply defined指重复定义,说明存在变量在编译的过程中被至少两次定义。我遇到过的是我在common.h中定义了变量,然后其它.h文件又引用了common.h,这就使得keil每次编译其它.h时都会重复定义common.h中的变量,从而造成了重复定义(multiply defined)。本题为例,若存在led.h中有变量 char led0 =0这样的变量定义,在编写main.h的时候引用了#include “led.h”,编译就会出现重复定义。因此,建议将变量的定义放在.c文件中,这样若要在其它.c文件使用该变量,可以使用extern关键字。 参考技术B 提示已经很清楚了,重复定义,在led和main两个文件中 参考技术C 回复 1# yfg123 本质,就是你已经定义了两个main函数,你要自己仔细找一下,看有没有两个定义。

以上是关于在keil for arm 编译环境中,axf文件是干啥的?怎么生成的?能修改吗?的主要内容,如果未能解决你的问题,请参考以下文章

keil5如何生成axf文件

Keil关于.axf文件报错

51单片机程序生不成axf文件吗?

.\outup\XXXX.axf: error: L6002U: Could not open file c:\Keil\ARM\

keil for c51 keil for arm 怎么才能同时使用

利用keil进行stm32仿真报错axf文件打不开,问题出现在啥地方