windows 环境编译例程失败

Viewed 102

一、描述你遇到的问题

windows 环境编译例程失败问题

二、你具体做的所有步骤结果截图

三、当前开发板状态全景照片

四、开发板串口所有日志

编译日志如下
[18/763] Building C object CMakeFiles/mbedtls.dir/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c.obj
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c: In function 'mbedtls_mpi_exp_mod':
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2204:5: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[x_index], j ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2205:5: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[1], j ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2206:5: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T, j * 2 ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2214:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &Apos, A ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2240:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &W[1], A, N ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2244:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[1], N->n + 1 ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2247:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[1], A ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2256:5: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[x_index], &RR ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2274:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[j], N->n + 1 ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2275:9: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[j], &W[1] ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2285:13: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[i], N->n + 1 ) );
^~~~~~~~~~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:40:0:
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/include/mbedtls/bignum.h:56:13: warning: jump skips variable initialization [-Wjump-misses-init]
goto cleanup;
^
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2286:13: note: in expansion of macro 'MBEDTLS_MPI_CHK'
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[i], &W[i - 1] ) );

 ^~~~~~~~~~~~~~~

D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2396:1: note: label 'cleanup' defined here
cleanup:
^~~~~~~
D:/pailiken/2024/SLE/bearpi-pico_h3863/open_source/mbedtls/mbedtls_v3.1.0/library/bignum.c:2295:12: note: 'exponent_bits_in_window' declared here
size_t exponent_bits_in_window = 0;
^~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
python path: C:\Users\10400\AppData\Local\Programs\Python\Python311\python.exe
flashboot start build .....
['C:\Users\10400\AppData\Local\Programs\Python\Python311\python.exe', 'build.py', 'ws63-flashboot']
loaderboot start build .....
['C:\Users\10400\AppData\Local\Programs\Python\Python311\python.exe', 'build.py', 'ws63-loaderboot']
[ws63][acore] run custom cmd success!
D:\pailiken\2024\SLE\bearpi-pico_h3863\build\script.....\config.in
d:\pailiken\2024\SLE\bearpi-pico_h3863
Kconfig header saved to 'D:\pailiken\2024\SLE\bearpi-pico_h3863\output\ws63\acore\ws63-liteos-app\mconfig.h'
######### Build target:ws63_liteos_app failed

================================ [FAILED] Took 9.96 seconds ================================

  • 终端进程已终止,退出代码: -1。
  • 终端将被任务重用,按任意键关闭。
2 Answers

你好,有解决吗,我也遇到这个问题了

你好,这个构建失败的直接原因是:你的编译系统(CMake/Ninja)配置了 -Werror 标志,这个标志会将**所有编译警告(Warning)都当作错误(Error)**来处理,从而导致构建中断。

日志中真正的“问题”是一个警告warning: jump skips variable initialization [-Wjump-misses-init]


警告的详细分析

这个警告 jump skips variable initialization(跳转跳过了变量初始化)非常常见,我来解释一下它在你的日志中具体是什么意思:

  1. 发生地点:在 mbedtls 库的 bignum.c 文件中,一个名为 mbedtls_mpi_exp_mod 的函数。
  2. 问题代码
    • 在这个函数中,有一个变量在第 2295 行被声明并初始化:size_t exponent_bits_in_window = 0;
    • 但是,在这个之前的代码行(例如 2204, 2205, 2214...行),使用了一个宏 MBEDTLS_MPI_CHK
    • 这个宏在检查到错误时,会执行 goto cleanup; 语句,直接跳转到函数末尾的 cleanup: 标签(在第 2396 行)。
  3. 核心冲突:当 MBEDTLS_MPI_CHK 触发 goto 时,程序执行流跳过了第 2295 行的 exponent_bits_in_window = 0; 这条初始化语句。
  4. 风险:代码跳转到 cleanup: 标签后,exponent_bits_in_window 这个变量虽然在作用域内,但它没有被初始化(值是随机的)。如果 cleanup: 之后的代码(或者函数返回后)不小心使用了这个变量,就可能导致程序崩溃或出现不可预料的行为。

编译器非常智能,它检测到了这种潜在风险,因此发出了 -Wjump-misses-init 警告。


如何解决

你有几个选择,推荐程度从高到低:

1. (推荐)修改 mbedtls 源代码

这是最“正确”的C语言做法,用于消除这个警告。

  • 打开 D:/.../mbedtls_v3.1.0/library/bignum.c 文件。
  • 找到第 2295 行的 size_t exponent_bits_in_window = 0;
  • 将它拆分为“声明”和“赋值”两部分:
    1. 声明 size_t exponent_bits_in_window; 移动到函数的最顶部(例如,和 int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; 这些变量放在一起)。
    2. 原来的第 2295 行,只保留赋值exponent_bits_in_window = 0;

修改前(示意):

int mbedtls_mpi_exp_mod(...)
{
    // ...
    // 很多 MBEDTLS_MPI_CHK( ... goto cleanup; )
    // ...
    size_t exponent_bits_in_window = 0; // 声明和初始化
    // ...
cleanup:
    // ...
}

修改后(示意):

int mbedtls_mpi_exp_mod(...)
{
    size_t exponent_bits_in_window; // 1. 仅声明,移到顶部
    // ...
    // 很多 MBEDTLS_MPI_CHK( ... goto cleanup; )
    // ...
    exponent_bits_in_window = 0; // 2. 仅赋值,留在原处
    // ...
cleanup:
    // ...
}

这样修改后,goto 跳转只是跳过了一个赋值语句,而变量的声明在跳转之前就已经完成了,编译器就不会再报这个警告。

2. (简单)在编译选项中禁用此警告

如果你不方便修改 mbedtls 的源代码,可以在你的 CMakeLists.txt仅针对 mbedtls 库关闭这个特定的警告。

在你的 CMake 脚本中,找到定义 mbedtls 库的地方(可能是 add_library(mbedtls ...)),在它后面添加:

# 假设 mbedtls 库的目标名是 mbedtls
target_compile_options(mbedtls PRIVATE "-Wno-jump-misses-init")

这会告诉编译器在编译 mbedtls 库时,忽略(no)这个 jump-misses-init 警告。

3. (不推荐)全局关闭 -Werror

在你的主 CMakeLists.txt 中找到设置 -Werror 的地方(例如 add_compile_options(-Werror)set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror"))并将其移除。

强烈不推荐这样做,因为这会让你在开发过程中忽略掉所有其他(可能更严重)的编译警告。


这种问题一般问AI比较好解决