Я скачал набор инструментов «НКА-рычажный ни-EABI-6-2017-q2-обновление-win32-sha1.exe(Windows) из https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads и установил его на моем компьютере с Windows 10.
Папка установки содержит файл release.txt в «../ Доля / DOC / НКУ-рычажного ни-EABI /», Который говорит:
Этот выпуск включает в себя следующие элементы:
- newlib и newlib-nano:
git: //sourceware.org/git/newlib-cygwin.git commit 0d79b021a4ec4e6b9aa1a9f6db0e29a137005ce7
А также readme.txt в «../ Доля / DOC / НКУ-рычажного ни-EABI /» содержит:
- Использование библиотек C *
Этот набор инструментов выпускается с двумя предварительно собранными библиотеками C, основанными на
newlib: один — стандартный newlib (libc.a), а другой —
newlib-nano (libc_nano.a) для размера кода.
Теперь я хочу точно восстановить все libc.a и libc_nano.a, содержащиеся в «../ Рука-ни-EABI / Библиотека / палец»
На данный момент я могу построить на Ubuntu с «НКА-рычажный ни-EABI-6-2017-q2-обновление-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
Если я вас правильно понимаю, более подробный вопрос:
Какие параметры конфигурации использовали разработчики 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
Как я это понял? Давайте пройдемся по процессу:
Эти пакеты основаны на Launchpad, откуда вы найдете все строит это произошло на ланучпаде. я выбрал gcc-arm-none-eabi 6-2017q2-1 от 2017-10-24. Там я могу найти buildlog. Я набрал в 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
скрипт.
Других решений пока нет …