chienheng 2020-01-03 00:24 采纳率: 0%
浏览 111

u-boot 編譯問題 fdt_64_t類型衝突

這篇文章有講解,但是我不太懂什麼意思,第一次uboot編譯。。。

https://github.com/Dragon0Spark/MonBuildroot/commit/1cbfc94c5a0ac4120925aa8c7337eb7957dc4678
我查了查,好象是include/libfdt和uboot有衝突
图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-26 23:47
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由编译器在编译过程中遇到的类型冲突引起的。解决方法可以分为两步:

    1. 检查并修复冲突:

      • libfdt目录中找到包含FDT_BITWISE类型的文件(例如tools/aisimage.c)。
      • 检查该文件是否正确地定义了uint64_t类型的FDT_BITWISE变量,并且没有重复定义。
    2. 使用符号重定位或宏替换:

      • 如果上述步骤不能解决问题,可能需要使用符号重定位或宏替换来避免冲突。
      • 使用符号重定位时,可以在编译选项中添加 -fno-omit-frame-pointer--sysv-new-functions 参数,这将帮助编译器自动选择正确的重定位函数。
      • 使用宏替换时,可以在编译选项中添加 -D_FORTIFY_SOURCE=2-g参数,这会增加程序的安全性,但可能会导致性能下降。
    3. 验证解决方案:

      • 执行完整的编译过程,并检查输出结果以确保没有出现新的问题。

    请注意,这些步骤仅适用于现代C++编译器,对于早期版本的编译器,可能需要采用不同的策略。此外,如果这是首次编译,请务必仔细阅读编译器的帮助文档,以了解如何配置编译环境以及如何处理类型冲突。

    评论

报告相同问题?