天天看點

【問題解決】ESP32報錯:error: expected initializer before ‘__result_use_check‘分析:解決:

報錯:

之前使用了高版本的

ESP-IDF

,現在要使用低版本的

ESP-IDF

。切換版本後再編譯就出錯了。

執行

make

或者

make all

/home/pjw/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/stdlib.h:155:44: error: expected initializer before '__result_use_check'
 void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size(2)
                                            ^~~~~~~~~~~~~~~~~~
/home/pjw/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/stdlib.h:340:52: error: expected initializer before '__alloc_align'
 void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
           

執行

make -j16

/home/pjw/ESP32/esp-mdf/esp-idf/components/newlib/include/stdio.h:282:12: error: 'vfiprintf' was not declared in this scope
 int _EXFUN(vfiprintf, (FILE *, const char *, __VALIST)
            ^~~~~~~~~
/home/pjw/ESP32/esp-mdf/esp-idf/components/newlib/include/stdio.h:282:29: error: expected primary-expression before '*' token
 int _EXFUN(vfiprintf, (FILE *, const char *, __VALIST)

....

一堆錯誤
           

分析:

ESP idf expected initializer before '__result_use_check’錯誤修複

看編譯資訊的最開始部分如下:

App "get-started" version: 237cc099-dirty
WARNING: Toolchain version is not supported: esp-2020r3
Expected to see version: crosstool-ng-1.22.0-97-gc752ad5
Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.
WARNING: Compiler version is not supported: 8.2.0
Expected to see version(s): 5.2.0
Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.
           

從資訊來看就是編譯工具鍊版本不對。

不支援

esp-2020r3

版本的工具鍊,要使用

crosstool-ng-1.22.0-97-gc752ad5

版本。

不支援

8.2.0

版本的編譯器,要使用

5.2.0

版本。

解決:

esp-idf

裡面執行了

.install.sh

以後,工具鍊和編譯器已經下載下傳到

~/.espressif/tools/xtensa-esp32-elf

裡面了。

是以隻需要修改一下環境變量就行了。

原來使用的

export PATH=~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin:$PATH

修改:

vim ~/.bashrc

# 删除之前的編譯鍊環境變量
#export PATH=~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin:$PATH

# 新增環境變量
export PATH=~/.espressif/tools/xtensa-esp32-elf/1.22.0-97-gc752ad5-5.2.0/xtensa-esp32-elf/bin:$PATH
source ~/.bashrc