gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:51:26 28 4
gpt4 key购买 nike

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

安装文件夹在“../share/doc/gcc-arm-none-eabi/”中包含一个 release.txt,它告诉:

This release includes the following items:

  • newlib and newlib-nano : git://sourceware.org/git/newlib-cygwin.git commit 0d79b021a4ec4e6b9aa1a9f6db0e29a137005ce7

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

  • C Libraries usage *

This toolchain is released with two prebuilt C libraries based on newlib: one is the standard newlib (libc.a) and the other is newlib-nano (libc_nano.a) for code size.

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

目前我可以在 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 以构建 libc.a 和 gcc-arm-none-eabi-6-2017-q2-update-linux.tar 中包含的 libc_nano.a 的精确拷贝。 bz2?

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

最佳答案

如果我没理解错的话,一个更详细的问题是:
“GNU Arm Embedded Toolchain”开发人员在构建 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

我是怎么得到的?让我们来看看这个过程:
这些软件包基于 launchpad 构建,从哪里可以找到所有 builds那发生在 lanuchpad 上。我选了gcc-arm-none-eabi 6-2017q2-1 from 2017-10-24 .在那里我可以找到 buildlog .我用 | grep "^+ " | grep "configure " | grep 'src/newlib' grep 了构建日志我还剩下:

+ /<<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

有点像夏洛克·福尔摩斯,我推断出第二行是配置为构建为 newlib-nano (--enable-newlib-reent-small) 的 newlib,第一行是配置为构建为完整 newlib 的 newlib。
要回答您的主题问题,以相同的方式重新编译 newlib 和 newlib-nano,将我在上面发布的选项传递给 newlib ./configure脚本。

关于c++ - 如何重建 GNU Arm 嵌入式工具链的 newlib 和 newlib-nano,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50154137/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com