本人是菜鸟,第一次写博客,有错误的地方,请各位大侠指正。
在做esp8266项目的时候,当在user_init函数中,要调用其它文件夹的.c文件时,该如何设置才可以被编译通过呢?比如在初始化串口时,要调用driver/uart.c文件里的uart_init函数。如下图所示:
但在build Project后,发现会有报错,如下图所示:
这个该如何处理呢?对于一个对Linux里的编译环境不熟的菜鸟来说,就是一头雾水。在经过对gcc,makefile等知识了解之后,才恍然大悟。原来在linux里的gcc编译环境里这么复杂,远没有window里的keil来得快啊。废话不多说,下面来看下解决的办法。
在app的文件夹里,找到Makefile文件并打开,有两个地方需要改动。第一个地方:
在“SUBDIRS”那里添加如下图:
.意思是需要编译的子文件夹是user和driver。我们的uart_init在driver/uart.c文件中。这里告诉编译器,此文件夹的文件要编译。
第二个需要修改的地方:在COMPONENTS_eagle.app.v6那里修改为:
告知编译器driver目录生成的库文件为libdriver.a。保存文件并进行编译,结果如下:
编译通过,生成了bin文件。