我从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,它告诉我们:
此版本包括以下内容:
- newlib和newlib-nano: git://sourceware.org/git/newlib-cygwin.git commit 0d79b021a4ec4e6b9aa1a9f6db0e29a137005ce7
“ ../ share / doc / gcc-arm-none-eabi / ”中的readme.txt包含:
- C库使用*
此工具链发布时带有两个基于的预构建C库 newlib:一个是标准的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
如何配置newlib以构建gcc-arm-none-eabi-6-2017-q2-update-linux.tar中包含的libc.a和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
答案 0 :(得分:4)
如果我理解正确,更详细的问题是:
配置选项有哪些' 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
我是怎么做到的?让我们来看看这个过程:
这些包构建在launchpad上,您可以在其中找到lanuchpad上发生的所有builds。我选择了gcc-arm-none-eabi 6-2017q2-1 from 2017-10-24。在那里我可以找到buildlog。我用| grep "^+ " | grep "configure " | grep 'src/newlib'
grep了buildlog,我留下了:
+ /<<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
脚本。