ge4*_*mue 7 c c++ arm newlib toolchain
我从https://developer.arm.com/open-source/gnu-toolchain/gnu下载了工具链“ gcc-arm-none-eabi-6-2017-q2-update-win32-sha1.exe ”(Windows)-rm/downloads并将其安装在我的 Windows 10 PC 上。
安装文件夹在“ ../share/doc/gcc-arm-none-eabi/ ”中包含一个 release.txt ,它告诉:
此版本包括以下项目:
- newlib 和 newlib-nano : git://sourceware.org/git/newlib-cygwin.git commit 0d79b021a4ec4e6b9aa1a9f6db0e29a137005ce7
“ ../share/doc/gcc-arm-none-eabi/ ”中的 readme.txt 还包含:
- C 库使用 *
该工具链与两个基于 newlib 的预构建 C 库一起发布:一个是标准的 newlib (libc.a),另一个是代码大小的 newlib-nano (libc_nano.a)。
现在我想完全重建“ ../arm-none-eabi/lib/thumb ”中包含的所有 libc.a 和 libc_nano.a
目前我可以使用“ gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 ”在Ubuntu上构建
$ # 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
Run Code Online (Sandbox Code Playgroud)
我必须如何配置 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
Run Code Online (Sandbox Code Playgroud)
Kam*_*Cuk 10
如果我理解正确的话,一个更详细的问题是:
“GNU Arm Embedded Toolchain”开发人员在构建 gcc-arm-none-eabi-6-2017-q2-update-linux.tar 中提供的 newlib 库时使用了哪些配置选项。 bz2存档?
这些用于 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上构建的,您可以从中找到在 lanuchpad 上进行的所有构建。我从 2017-10-24选择了gcc-arm-none-eabi 6-2017q2-1。在那里我可以找到buildlog。我用 grepped 构建日志,| 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
一些福尔摩斯和我推断第二行是配置为 newlib-nano ( --enable-newlib-reent-small) 的 newlib,第一行是配置为构建为完整 newlib 的 newlib。
要回答您的主题问题,以相同的方式重新编译 newlib 和 newlib-nano 将我在上面发布的选项传递给 newlib./configure脚本。