预备知识
一份代码工程编译成二进制可执行文件,需要经过四个步骤:预处理、编译、汇编和链接。
进行编译需要有编译器,Linux环境下使用的是gcc,而对应的,ESP8266使用的编译器是xtensa-lx106-elf-gcc。在后面分析Makefile中,我们就会看到该编译器。
下面是其他一些工具的含义:
- ar:用于建立或修改备存文件,或是从备存文件中抽取文件
- nm:用来列出目标文件的符号清单
- objcopy:将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换
- objdump:查看目标文件或者可执行的目标文件的构成
Makefile分析
由此可见,我们至少要分析三个Makefile:
- 主目录下的Makefile
- app目录下的Makefile
app/user/
的Makefile
BOOT?=new
APP?=1
SPI_SPEED?=40
SPI_MODE?=QIO
SPI_SIZE_MAP?=6
更改4报错
//**********************************************************************************/
// SDK v3.0
void ICACHE_FLASH_ATTR user_pre_init(void)
{
if(!system_partition_table_regist(at_partition