Kaaproject esp8266构建冲突类型

时间:2017-02-07 17:30:04

标签: kaa

我已经安装了ESP8266 SDK and toolchain并尝试构建从kaa sandbox生成的项目 CDataCollectionDemo 。我得到这样的错误

/opt/Espressif/esp-rtos-sdk/include/espressif/c_types.h:47:29: error: conflicting types for ‘size_t’
 typedef unsigned int        size_t;
                             ^
In file included from /opt/Espressif/esp-rtos-sdk/extra_include/string.h:14:0,
                 from /home/tung/kaa/project/CDataCollectionDemo/targets/esp8266/target.

这是完整的输出

tung@ubuntu:~/kaa/project/CDataCollectionDemo$ sudo ./build.sh deploy
-- The C compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
==================================
BUILD_TYPE = (Default)
KAA_PLATFORM = posix
KAA_MAX_LOG_LEVEL = 3
==================================
BOOTSTRAP ENABLED
PROFILE ENABLED
USER EXTENSION ENABLED
CONFIGURATION ENABLED
EVENTS ENABLED
LOGGING ENABLED
NOTIFICATION ENABLED
ENCRYPTION ENABLED
KAA WILL BE INSTALLED TO  /usr/local
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Could NOT find cppcheck
-- WiFi AP: WiFi SSID
-- WiFi Pass: 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tung/kaa/project/CDataCollectionDemo/build
Scanning dependencies of target target_support
[  1%] Building C object targets/esp8266/CMakeFiles/target_support.dir/target.c.o
In file included from /opt/Espressif/esp-rtos-sdk/extra_include/sys/config.h:4:0,
                 from /opt/Espressif/esp-rtos-sdk/extra_include/_ansi.h:16,
                 from /opt/Espressif/esp-rtos-sdk/extra_include/string.h:10,
                 from /home/tung/kaa/project/CDataCollectionDemo/targets/esp8266/target.c:17:
/opt/Espressif/esp-rtos-sdk/extra_include/machine/ieeefp.h:277:2: error: #error Endianess not declared!!
 #error Endianess not declared!!
  ^
In file included from /opt/Espressif/esp-rtos-sdk/include/espressif/esp_common.h:9:0,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/portmacro.h:73,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/portable.h:318,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/FreeRTOS.h:87,
                 from /home/tung/kaa/project/CDataCollectionDemo/targets/esp8266/target.c:19:
/opt/Espressif/esp-rtos-sdk/include/espressif/c_types.h:47:29: error: conflicting types for ‘size_t’
 typedef unsigned int        size_t;
                             ^
In file included from /opt/Espressif/esp-rtos-sdk/extra_include/string.h:14:0,
                 from /home/tung/kaa/project/CDataCollectionDemo/targets/esp8266/target.c:17:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h:212:23: note: previous declaration of ‘size_t’ was here
 typedef __SIZE_TYPE__ size_t;
                       ^
In file included from /opt/Espressif/esp-rtos-sdk/include/espressif/esp_common.h:10:0,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/portmacro.h:73,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/portable.h:318,
                 from /opt/Espressif/esp-rtos-sdk/include/freertos/FreeRTOS.h:87,
                 from /home/tung/kaa/project/CDataCollectionDemo/targets/esp8266/target.c:19:
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:10:7: error: conflicting types for ‘strncpy’
 char *strncpy(char *dst, const char *src, size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:12:5: error: conflicting types for ‘strncmp’
 int strncmp(const char *s1, const char *s2, size_t n);
     ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:13:8: error: conflicting types for ‘strlen’
 size_t strlen(const char *s);
        ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:16:7: error: conflicting types for ‘strncat’
 char *strncat(char *dst, const char *src, size_t count);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:17:8: error: conflicting types for ‘strspn’
 size_t strspn(const char *s, const char *accept);
        ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:18:8: error: conflicting types for ‘strcspn’
 size_t strcspn(const char *s, const char *reject);
        ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:26:6: error: conflicting types for ‘bzero’
 void bzero(void *s, size_t n);
      ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:28:7: error: conflicting types for ‘memcpy’
 void *memcpy(void *dst, const void *src, size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:29:7: error: conflicting types for ‘memset’
 void *memset(void *dst, int c, size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:30:5: error: conflicting types for ‘memcmp’
 int memcmp(const void *m1, const void *m2, size_t n);
     ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:31:7: error: conflicting types for ‘memmove’
 void *memmove(void *dst, const void *src, size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:37:5: warning: conflicting types for built-in function ‘snprintf’ [enabled by default]
 int snprintf(char *buf, unsigned int count, const char *format, ...);
     ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:41:7: warning: conflicting types for built-in function ‘malloc’ [enabled by default]
 void *malloc(size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:43:7: warning: conflicting types for built-in function ‘calloc’ [enabled by default]
 void *calloc(size_t c, size_t n);
       ^
/opt/Espressif/esp-rtos-sdk/include/espressif/esp_libc.h:45:7: warning: conflicting types for built-in function ‘realloc’ [enabled by default]
 void *realloc(void *p, size_t n);
       ^
make[2]: *** [targets/esp8266/CMakeFiles/target_support.dir/target.c.o] Error 1
make[1]: *** [targets/esp8266/CMakeFiles/target_support.dir/all] Error 2
make: *** [all] Error 2
./build.sh: 52: ./build.sh: ./demo_client: not found

我所做的一切都遵循kaa文档,除了在build.sh文件中将 -DKAA_PLATFORM = esp8266 参数添加到cmake命令。你能告诉我这里有什么问题以及如何解决它。谢谢!

更新

我已经为@MrKoin建议添加了一些cmake命令的参数,但仍然出错

Cmake参数

cmake .. \
        -DCMAKE_TOOLCHAIN_FILE=../libs/kaa/toolchains/esp8266.cmake \
        -DKAA_PLATFORM=esp8266 \
        -DCMAKE_BUILD_TYPE=MinSizeRel \

输出

In file included from /home/tung/kaa/project/CDataCollectionDemo/libs/kaa/thirdparty/mbedtls/aes.c:27:0:
/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.2/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory
 # include_next <stdint.h>
                          ^
compilation terminated.
make[2]: *** [libs/kaa/tools/kaa_encryption/rsa_key_gen/mbedtls/CMakeFiles/mbedtls.dir/aes.c.obj] Error 1
make[1]: *** [libs/kaa/tools/kaa_encryption/rsa_key_gen/mbedtls/CMakeFiles/mbedtls.dir/all] Error 2
make: *** [all] Error 2

似乎有些图书馆遗失了。我现在应该怎么做?谢谢!

3 个答案:

答案 0 :(得分:0)

看起来你需要在cmake参数中指定cmake工具链文件:

cmake -DCMAKE_TOOLCHAIN_FILE=../libs/kaa/toolchains/esp8266.cmake \
    -DKAA_PLATFORM=esp8266 .. 

请参阅documentation了解详情。

答案 1 :(得分:0)

它可能与您从Kaa网站引用的教程中的第5步安装ESP8266 RTOS SDK 有关。

您是否运行了命令sed -i 's:#include "c_types.h"://#include "c_types.h":' $ESP_SDK_HOME/include/lwip/arch/cc.h

我记得我有类似(或相同)的问题而忘记执行此命令。它注释掉#include与其他类型的声明冲突。

答案 2 :(得分:0)

您需要编辑build.sh文件, 找到build()并更改代码:

default-src 'self';style-src 'self';img-src 'self' https:;script-src 'self';connect-src 'self';font-src chrome-extension: moz-extension: safari-extension: data:;report-uri /csp.php