我通常会从头开始构建工具链,但似乎ARM并没有发布其版本的源代码,只是预构建的工具链。我需要用newlib标志--disable-newlib-mb
重建工具链,以减少不必要的空间。我使用的ARM GCC版本是12.2,来自ARM开发人员网站:arm-gnu-toolchain-12.2.mpacbti-rel1-x86_64-arm-none-eabi.tar.xz
。使用它是因为它实现了C++ 20的特性。
有没有一种方法可以在预构建的工具链下更改此标志,从而重新构建newlib?或者更好的是,从头开始构建ARM GCC工具链?我会很感激任何帮助,因为我一直在网上搜索了一段时间了。
我试过使用Linaro ABE工具,但我无法具体更改newlib的配置。
1条答案
按热度按时间kkbh8khc1#
有没有一种方法可以在预构建的工具链下更改此标志,从而重新构建newlib?
您需要检索相同版本的newlib。更新的选项应与应用程序匹配。例如,我使用它创建了一个PIC版本的newlib。
1.查找配置选项。
1.找到newlib的版本。
文件'12.2.mpacbti-rel1-x86_64-arm-none-eabi-manifest.txt'包含newlib的配置选项。
字符串
根据'arm-none-eabi/include/_newlib_version.h',它使用的是newlib 4.3.0。您可以从https://sourceware.org/newlib/中获取一个副本并 checkout 此标记,然后使用修改后的配置选项重新构建。然后你必须使用一个自定义的'spec'文件或者修改link命令来定位你的自定义构建的newlib。
ARM可能没有使用标准的newlib版本。它是GPL,所以如果不是来自上面的www.example.com链接,他们应该提供源代码sourceware.org。
或者更好的是,从头开始构建ARM GCC工具链?我会很感激任何帮助,因为我一直在网上搜索了一段时间了。
https://crosstool-ng.github.io/通常是大多数gcc软件包构建的基础。但是,这意味着您需要自己分发整个工具链。newlib要小得多,需要的支持也更少。构建 gcc 预计需要几天的计算时间,而对于某些机器,newlib 可能需要几个小时。这是一个简单的方法来构建 newlib。通常需要一些小的补丁来构建 gcc,但是你必须等待几个小时才能看到一个补丁是否工作,因为它是用几个子包构建的;特别是对于我们正在讨论的交叉编译器。
获取和修复 newlib 是更简单的选择。构建自己的cross gcc要复杂得多。