编译环境 :WIN7 64位+Eclipse IDE from AITHINKER-ESP8266-SDK
SDK版本: ESP8266 NONOS SDK V2.1.0 20170505
编译过程参考了:http://blog.youkuaiyun.com/qq_15647227/article/details/51593554 在此表示感谢
SDK的下载和IDE环境的安装这里就不多说了,参考原教程即可。这里重点说明一下对SDK的根目录需要做哪些改动:
- 从example目录下面复制你想使用的范例到SDK根目录下。
- 将该文件夹改名为app(可以不是这个名称,但是为了后续描述需要,这里统称为app文件夹)
- 将SDK根目录下driver_lib/include文件夹复制到app文件夹内,覆盖原文件
- 将SDK根目录下driver_lib/driver文件夹复制到app文件夹内,覆盖原文件
- 可能由于编译器升级的缘故,部分代码需要做下面的修改:
- app\driver\hw_timer.c:
- 第117行 ETS_FRC_TIMER1_INTR_ATTACH(hw_timer_isr_cb, NULL); 修改为:ETS_FRC_TIMER1_INTR_ATTACH((ets_isr_t)hw_timer_isr_cb, NULL);
- app\driver\key.c:
- 第71行 ETS_GPIO_INTR_ATTACH(key_intr_handler, keys); 修改为 ETS_GPIO_INTR_ATTACH((ets_isr_t)key_intr_handler, keys);
- 修改app/Makefile,在第25行SUBDIRS = \ 下面一行插入 driver \,如下:
- 修改前
SUBDIRS= \
user \
mqtt \
modules
- 修改后
SUBDIRS= \
driver \
user \
mqtt \
modules
- 修改app/Makefile,在第52行COMPONENTS_eagle.app.v6 = \ 下面一行插入 driver/libdriver.a\,如下:
- 修改前
COMPONENTS_eagle.app.v6 = \
user/libuser.a \
mqtt/libmqtt.a \
modules/libmodules.a
- 修改后
COMPONENTS_eagle.app.v6 = \
driver/libdriver.a \
user/libuser.a \
mqtt/libmqtt.a \
modules/libmodules.a
- 修改app/Makefile, 删除 -ldriver \ 行
- 修改app/Makefile, 在INCLUDES := 行最后边增加 -I $(PDIR)include/driver
- 将SDK根目录中的include文件夹 复制到app文件夹内,跳过相同的文件
- 删除SDK根目录下的driver_lib和include文件夹
- 完成之后的目录应当如下图所示:

- app\driver\hw_timer.c:
- 第117行 ETS_FRC_TIMER1_INTR_ATTACH(hw_timer_isr_cb, NULL); 修改为:ETS_FRC_TIMER1_INTR_ATTACH((ets_isr_t)hw_timer_isr_cb, NULL);
- app\driver\key.c:
- 第71行 ETS_GPIO_INTR_ATTACH(key_intr_handler, keys); 修改为 ETS_GPIO_INTR_ATTACH((ets_isr_t)key_intr_handler, keys);
- 修改前
SUBDIRS= \ user \ mqtt \ modules
- 修改后
SUBDIRS= \ driver \ user \ mqtt \ modules
- 修改前
COMPONENTS_eagle.app.v6 = \ user/libuser.a \ mqtt/libmqtt.a \ modules/libmodules.a
- 修改后
COMPONENTS_eagle.app.v6 = \ driver/libdriver.a \ user/libuser.a \ mqtt/libmqtt.a \ modules/libmodules.a
ps:个别环境下需要把app/driver/.output/eagle/libuser.a 文件手工复制到SDK根目录下的lib文件夹中并覆盖同名文件。估计和其他环境变量配置有关系。
恭喜你,已经可以成功使用自定义驱动库libdriver.a进行编译了: