RISC-V技术论坛
直播中

而无返还

8年用户 1250经验值
擅长:光电显示
私信 关注
[问答]

基于windows的msys2中搭建环境编译 执行make后提示错误,是什么原因?

https://github.com/riscv-mcu/riscv-openocd 下载源码,基于windows的msys2中搭建环境编译
执行make后提示错误,是什么原因?有用过的小伙伴吗?官方技术支持能解答一下吗?
错误提示如下:有error关键字的地方都粘贴上来了。

../src/jtag/drivers/mpsse.c: In function 'open_matching_device':
../src/jtag/drivers/mpsse.c: 368:39:error: comparison is always true due to limited range of data type [-Werror=type-limits]
368 |         if (product && ctx->interface >= FTD2XX_CHANNEL_MIN && ctx->interface <= FTD2XX_CHANNEL_MAX) {
       |                                                                  ^~
../src/jtag/drivers/mpsse.c:381:43:error: comparison of integer expressions of different signedness: 'int' and 'DWORD' {aka 'long unsigned int'} [-Werror=sign-compare]
381 |                         for (int i = 0; i < ft_cnt; i++) {
       |                                                                  ^~
../src/jtag/drivers/mpsse.c:401:79: error: assignment discards 'const' qualifier from pointer target  type [-Werror=discarded-qualifiers]

401 |      ft_matched_device_description = product;
        |                                                                  ^~
In file included from ../src/jtag/drivers/mpsse.c:24:
../src/jtag/drivers/mpsse.c:444:27: error: format  '%x' expects argument of type 'unsigned int', but argument 6 has type 'ULONG' {aka 'long unsigned int'} [-Werror=format=]
444 |                 LOG_ERROR("unsupported FTDI chip type (D2xx): 0x%04x", devInfo[ft_matched_device_id].Type);

../src/jtag/drivers/mpsse.c: In function 'mpsse_purge':
../src/jtag/drivers/mpsse.c:666:27: error: format '%u' expects argument of type 'unsigned int', but argument 6 has type 'FT_STATUS' {aka 'long unsigned int'} [-Werror=format=]
666 |                 LOG_ERROR("unable to purge  ftdi tx&rx buffers: %ul", ft_status);
../src/jtag/drivers/mpsse.c: In function 'mpsse_flush':
../src/jtag/drivers/mpsse.c:1145:27: error: format '%d' expects argument of type 'int', but argument  6 has type 'DWORD' {aka 'long unsigned int'} [-Werror=format=]
1145 |                 LOG_ERROR("ftdi device did not accept all data: %d, tried %d",............
../src/jtag/drivers/mpsse.c:1150:27: error: format '%d' expects argument of type 'int', but argument  6 has type 'DWORD' {aka 'long unsigned int'} [-Werror=format=]
1150 |                 LOG_ERROR("ftdi device did  not return all data: %d, expected %d",...............
../src/jtag/drivers/mpsse.c:1141:12: error: 'ft_status' may be used uninitialized [-Werror=maybe-uninitialized]
1141 |         if (ft_status != FT_OK) {..........










回帖(1)

王兰

2024-5-22 17:43:49
根据您提供的错误信息,这个问题可能是由于编译器优化选项导致的。错误提示中提到的 "-Werror=type-limits" 是一个编译器选项,它会在类型限制问题上生成错误。

在这种情况下,错误信息是关于一个始终为真的比较。这可能是因为编译器认为某个变量的范围有限,导致比较操作无效。

为了解决这个问题,您可以尝试以下步骤:

1. 检查您的代码,确保没有逻辑错误。特别是关注错误信息中提到的文件和行号。

2. 尝试禁用或修改编译器的优化选项。在 Makefile 或编译命令中,您可以添加或修改以下选项:

   ```
   -Wno-error=type-limits
   ```

   这将禁用因类型限制问题导致的错误的警告。

3. 如果问题仍然存在,您可以尝试更新您的编译器或工具链,以确保您使用的是最新版本。

4. 如果您仍然无法解决问题,可以尝试在项目的 GitHub 仓库中查找类似的问题或报告一个新问题。项目的维护者和社区成员可能会提供帮助。

5. 另外,您可以尝试联系官方技术支持,他们可能会提供更具体的解决方案。

希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分