Как перестроить newlib и newlib-nano из GNU Arm Embedded Toolchain - PullRequest
0 голосов
/ 03 мая 2018

Я скачал набор инструментов « 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 commit 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 для создания точных копий libc.a и libc_nano.a, содержащихся в 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 --???
$ make

1 Ответ

0 голосов
/ 15 мая 2018

Если я вас правильно понял, более подробный вопрос:
Какие параметры конфигурации использовали разработчики GNU Arm Embedded Toolchain при создании библиотек newlib, поставляемых в архиве gcc-arm-none-eabi-6-2017-q2-update-linux.tar.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

Как я понял? Давайте пройдемся по процессу:
Эти пакеты построены на панели запуска , где вы найдете все сборки , которые имели место на lanuchpad. Я выбрал gcc-arm-none-eabi 6-2017q2-1 из 2017-10-24 . Там я могу найти buildlog . Я собрал журнал сборки с помощью | 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, настроенная для сборки как newlib-nano (--enable-newlib-reent-small), первая - это newlib, настроенная для сборки как полная newlib.
Чтобы ответить на вопрос вашей темы, чтобы перекомпилировать newlib и newlib-nano таким же образом, передайте опции, которые я опубликовал выше, в скрипт newlib ./configure.

...