如何重建GNU Arm嵌入式工具链的newlib和newlib-nano

2023-11-22

我下载了工具链“gcc-arm-none-eabi-6-2017-q2-update-win32-sha1.exe”(Windows)来自https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads并将其安装在我的 Windows 10 电脑上。

安装文件夹中包含一个release.txt“../share/doc/gcc-arm-none-eabi/”其中讲述:

此版本包括以下项目:

  • newlib 和 newlib-nano : git://sourceware.org/git/newlib-cygwin.git 提交 0d79b021a4ec4e6b9aa1a9f6db0e29a137005ce7

还有“中的 readme.txt”../share/doc/gcc-arm-none-eabi/” 包含:

  • C 库使用 *

该工具链随两个基于以下内容的预构建 C 库一起发布: newlib:一个是标准的newlib(libc.a),另一个是 newlib-nano (libc_nano.a) 用于代码大小。

现在我想完全重建“”中包含的所有 libc.a 和 libc_nano.a../arm-none-eabi/lib/thumb

目前我可以在 Ubuntu 上使用“gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

$ # Downloaded newlib-cygwin (with corresponding hash) into folder newlib-cygwin
$ mkdir build
$ cd build
$ ../newlib-cygwin/configure --target=arm-none-eabi --disable-newlib-supplied-syscalls
$ make

我如何配置 newlib 来构建 gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 中包含的 libc.a 和 libc_nano.a 的精确副本?

$ # Downloaded newlib-cygwin (with corresponding hash) into folder newlib-cygwin
$ mkdir build
$ cd build
$ ../newlib-cygwin/configure --target=arm-none-eabi --???
$ make

如果我理解正确的话,一个更详细的问题是:
“GNU Arm 嵌入式工具链”开发人员在构建 gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 存档中提供的 newlib 库时使用了哪些配置选项?
这些是 newlib 的:

--target=arm-none-eabi --enable-newlib-io-long-long --enable-newlib-register-fini --enable-newlib-retargetable-locking --disable-newlib-supplied-syscalls --disable-nls

这些是 newlib-nano 的:

--target=arm-none-eabi --enable-newlib-reent-small --disable-newlib-fvwrite-in-streamio --disable-newlib-fseek-optimization --disable-newlib-wide-orient --enable-newlib-nano-malloc --disable-newlib-unbuf-stream-opt --enable-lite-exit --enable-newlib-global-atexit --enable-newlib-nano-formatted-io --disable-nls

我是怎么得到的?我们来回顾一下整个过程:
这些包是建立在发射台,从哪里你可以找到所有builds这发生在发射台上。我挑了gcc-arm-none-eabi 6-2017q2-1 从 2017-10-24。在那里我可以找到buildlog。我用 grep 构建日志| grep "^+ " | grep "configure " | grep 'src/newlib'我留下了:

+ /<<PKGBUILDDIR>>/src/newlib/configure --target=arm-none-eabi --prefix=/<<PKGBUILDDIR>>/install-native --infodir=/<<PKGBUILDDIR>>/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/<<PKGBUILDDIR>>/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/<<PKGBUILDDIR>>/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/<<PKGBUILDDIR>>/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-newlib-io-long-long --enable-newlib-register-fini --enable-newlib-retargetable-locking --disable-newlib-supplied-syscalls --disable-nls + /<<PKGBUILDDIR>>/src/newlib/configure --target=arm-none-eabi --prefix=/<<PKGBUILDDIR>>/build-native/target-libs --disable-newlib-supplied-syscalls --enable-newlib-reent-small --disable-newlib-fvwrite-in-streamio --disable-newlib-fseek-optimization --disable-newlib-wide-orient --enable-newlib-nano-malloc --disable-newlib-unbuf-stream-opt --enable-lite-exit --enable-newlib-global-atexit --enable-newlib-nano-formatted-io --disable-nls

一些 Sherlock Holmes 和我推断第二行是 newlib 配置为构建为 newlib-nano (--enable-newlib-reent-small),第一个是 newlib,配置为构建为完整的 newlib。
要回答您的主题问题,请以相同的方式重新编译 newlib 和 newlib-nano 将我上面发布的选项传递给 newlib./configure script.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重建GNU Arm嵌入式工具链的newlib和newlib-nano 的相关文章

随机推荐