Здесь приведены наиболее полезные и общие конфигурационные опции. Остальное можно найти в исходниках. Обычно они приведены в комментариях.
--disable-cloog-version-check disable check for CLooG version --disable-dependency-tracking speeds up one-time build --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --disable-libtool-lock avoid locking (might break parallel builds) --disable-newlib-atexit-alloc disable dynamic allocation of atexit entries --disable-newlib-io-float disable printf/scanf family float support --disable-newlib-supplied-syscalls disable newlib from supplying syscalls --disable-option-checking ignore unrecognized --enable/--with options --disable-ppl-version-check disable check for PPL version --enable-bootstrap enable bootstrapping [yes if native build] --enable-build-with-cxx build with C++ compiler instead of C compiler --enable-dependency-tracking do not reject slow dependency extractors --enable-fast-install[=PKGS] --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-gold use gold instead of ld --enable-libada build libada directory --enable-libssp build libssp directory --enable-lto enable link time optimization support --enable-maintainer-mode --enable-maintainer-mode enable make rules and dependencies not useful --enable-maintainer-mode enable make rules and dependencies not useful --enable-malloc-debugging indicate malloc debugging requested --enable-multilib build many library versions (default) --enable-newlib-elix-level supply desired elix library level (1-4) --enable-newlib-hw-fp Turn on hardware floating point math --enable-newlib-iconv enable iconv library support --enable-newlib-iconv-encodings enable specific comma-separated list of bidirectional iconv encodings to be built-in --enable-newlib-iconv-external-ccs enable capabilities to load external CCS files for iconv --enable-newlib-iconv-from-encodings enable specific comma-separated list of \"from\" iconv encodings to be built-in --enable-newlib-iconv-to-encodings enable specific comma-separated list of \"to\" iconv encodings to be built-in --enable-newlib-io-c99-formats enable C99 support in IO functions like printf/scanf --enable-newlib-io-long-double enable long double type support in IO functions printf/scanf --enable-newlib-io-long-long enable long long type support in IO functions like printf/scanf --enable-newlib-io-pos-args enable printf-family positional arg support --enable-newlib-mb enable multibyte support --enable-newlib-multithread enable support for multiple threads --enable-newlib-reent-small enable small reentrant struct support --enable-objc-gc enable use of Boehm's garbage collector with the --enable-serial-[{host,target,build}-]configure --enable-shared[=PKGS] build shared libraries [default=yes] --enable-stage1-checking[=all] choose additional checking for stage1 --enable-stage1-languages[=all] choose additional languages to build during --enable-static[=PKGS] build static libraries [default=yes] --enable-target-optspace optimize for space --enable-werror enable -Werror in bootstrap stage2 and later --with-boot-ldflags=FLAGS Linker flags for stage2 and later --with-boot-libs=LIBS Libraries for stage2 and later --with-build-libsubdir=DIR Directory where to find libraries for build system --with-build-sysroot=SYSROOT --with-build-time-tools=PATH --with-cloog-include=PATH Specify directory for installed CLooG include files --with-cloog-lib=PATH Specify the directory for the installed CLooG library --with-cloog=PATH Specify prefix directory for the installed CLooG-PPL package --with-debug-prefix-map='A=B C=D ...' --with-gmp-dir=PATH this option has been REMOVED --with-gmp-include=PATH specify directory for installed GMP include files --with-gmp-lib=PATH specify directory for the installed GMP library --with-gmp=PATH specify prefix directory for the installed GMP package. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-host-libstdcxx=L Use linker arguments L to link with libstdc++ --with-libelf-include=PATH Specify directory for installed libelf include files --with-libelf-lib=PATH Specify the directory for the installed libelf library --with-libelf=PATH Specify prefix directory for the installed libelf package --with-mpc-include=PATH --with-mpc-lib=PATH specify directory for the installed MPC library --with-mpc=PATH specify prefix directory for installed MPC package. --with-mpfr-dir=PATH this option has been REMOVED --with-mpfr-include=PATH --with-mpfr-lib=PATH specify directory for the installed MPFR library --with-mpfr=PATH specify prefix directory for installed MPFR package. --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-pic try to use only PIC/non-PIC objects [default=use --with-ppl-include=PATH Specify directory for installed PPL include files --with-ppl-lib=PATH Specify the directory for the installed PPL library --with-ppl=PATH Specify prefix directory for the installed PPL package --with-stage1-ldflags=FLAGS Linker flags for stage1
Если хочется исследовать конйигурацию NewLib более подробно, то сырой список управляющих макросов можно получить так:
find $NEWLIB_DIR -iname "*.[ch]" -type f \ | xargs sed -n -e "s/^\\s*#ifn\?def\\s\+\([0-9A-Za-z_]\+\).*$/\\1/p" -e \ "s/^.*defined\s*[ \(]\?\\s*\([0-9A-Za-z_]\+\)\\s*[\)].*$/\\1/p" \ | sort | uniq
Их около 2000, однако для конфигурации используются не все.
Включение опции подразумевает, что данный набор функций предоставляется пользователем, таким образом отключая компиляцию их.
Ключ | Функции | Комментарии, зависимости |
---|---|---|
MALLOC_PROVIDED | malloc, free, calloc, realloc, _%_r | sbrk |
REENTRANT_SYSCALLS_PROVIDED | _open64_r, _mkdir_r, _gettimeofday_r, _times_r, _fstat64_r, _exec_r, _open_r, _fstat_r, _rename_r, _write_r, _close_r, _stat_r, _stat64_r, _lseek64_r, _lseek_r, _signal_r, _unlink_r, _link_r, _sbrk_r, _read_r, _isatty_r, _fcntl_r | Отменяется опцией _REENT_ONLY |
SIGNAL_PROVIDED | signal, raise, _%_r | |
ABORT_PROVIDED | abort | |
CLOCK_PROVIDED | clock | _times_r |
Ключи сигнализируют о том, какие функции доступны из окружения. Это влияет на компиляцию функций, которые могут их использовать. Например, HAVE_MMAP
может использоваться memcpy
.
Ключ | Функции | Комментарии, зависимости |
---|---|---|
HAVE_AF | af | |
HAVE_ALLOCA | alloca | Обычно определена |
HAVE_ASM_POPSECTION_DIRECTIVE | .popsection | |
HAVE_ASSERT_FUNC | _ _assert_func | assert |
HAVE_AUX_VECTOR | ||
HAVE_BLKSIZE | struct stat::st_blksize | fseek, makebuf |
HAVE_BUILTIN_EXPECT | _ _builtin_expect | |
HAVE_DD_LOCK | _ _lock_*_recursive | *dir |
HAVE_ELF | .weak, .weakext | Определяется |
HAVE_FCNTL | fcntl, _fcntl_r | |
HAVE_ _ _FSETLOCKING | localealias | ? |
HAVE_GETDATE | getdate, _ _getdate_err, _getdate_r | |
HAVE_GETOPT | getopt | getopt |
HAVE_GETPAGESIZE | getpagesize | malloc_getpagesize |
HAVE_HW_PCMP | pcmp* (инструкция mips?) | str* |
HAVE_INITFINI_ARRAY | .([pre]init/fini)_array | _ _ _libc_*_array |
HAVE_LIBIDN | _ _idna* | |
HAVE_LOCALE_NULL | ? | |
HAVE_MEMCPY | memcpy | |
HAVE_MEMPCPY | mempcpy | |
HAVE_MEMSET | memset | |
HAVE_MKDIR | _mkdir_r | |
HAVE_MMAP | mmap, munmap | ? malloc |
HAVE_MREMAP | mremap | ? |
HAVE_NANOSLEEP | nanosleep | |
HAVE_OPENDIR | opendir, readdir, closedir | |
HAVE_POPEN | popen | gopen |
HAVE_RENAME | _rename | _rename_r |
HAVE_SYSTEM | _system | _system_r |
HAVE_USR_INCLUDE_MALLOC_H | /usr/include/malloc.h, struct mallinfo | *alloc |
_HAVE_LONG_DOUBLE | long double | |
_HAVE_SYSTYPES | _ _off_t, _ _pid_t |
Включает при сборке различные возможности.
Ключ | Функции |
---|
Запрещает компиляцию нереентрантных версий функций, оставляя только реентрантные. Отменяет REENTRANT_SYSCALLS_PROVIDED.
Включает компиляцию функцй, работающих с большими файлами (fopen64 и т. п.)
Собственный способ блокировки «кучи» в виде выражения си. Может вызываться вложенно (и это требуется обрабатывать). Если макрос не определён, используется внутренняя _malloc_lock(_REENT); Не требуется, если задан MALLOC_PROVIDED.
Собственный способ разблокировки «кучи» в виде выражения си. Может вызываться вложенно (и это требуется обрабатывать). Если макрос не определён, используется внутренняя _malloc_unlock(_REENT); Не требуется, если задан MALLOC_PROVIDED.
TODO: описать внутренности.
Выравнивание адреса при динамическом выделении. По умолчанию 8, другое доступное значение — 16.
Считать ли ли realloc(p, 0)
освобождением памяти. По умолчанию — нет.
Определяет, использовать библиотечные memcpy, memmove (если 1) или макросы (если 0). По умолчанию 1, если установлено HAVE_MEMCPY (а оно почему-то определяется как установленное прямо в исходнике mallocr.c).
Константа или системный вызов, определяющий размер страницы памяти.
Позволяет переопределить внутренний тип, аналогичный size_t
, позволяет сделать его 32-битным на 64-битных машинах.
Определить, если в системе отсутствует unistd.h
.
Определяют способ получения свободной памяти от системы. См. исходники.
Настройка параметров взаимодействия с системой (sbrk, mmap и т. д.). См. исходники.
Включает вывод сообщения «Abort called» в поток 2 (stderr) при вызове abort()
. Не работает при указании ABORT_PROVIDED.
Включает кучу проверок при исполнении, обеспечивая безопасность кода, однако существенно его замедляя.
Включить, если окружение не поддерживает исполнение команд оболочки.
Включает отладку библиотечных функций.
Компиляция каждой функции в одельный объектный файл (видимо, требует ручной сборки).
double = 32 бит.
В случае компиляции в режиме C++ помещает всё в namespace std
.
Серия ключей для управления кодировками iconv.