OpenLibm — это попытка создать высококачественную портативную автономную математическую библиотеку C ( libm
). Его можно использовать автономно в приложениях и реализациях языков программирования.
Проект родился из необходимости иметь хорошую libm
для языка программирования Julia, которая бы стабильно работала в компиляторах и операционных системах, а также в 32- и 64-битных средах.
OpenLibm построен на Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD и DragonFly BSD. Он собирается как с GCC, так и с clang. Несмотря на то, что OpenLibm в основном протестирован и широко используется на архитектурах x86 и x86-64, он также поддерживает Arm, aarch64, ppc64le, mips, wasm32, riscv, s390(x) и loongarch64.
make
, а в BSD gmake
.make USEGCC=1
для сборки с помощью GCC. Это значение по умолчанию в Linux и Windows.make USECLANG=1
для сборки с помощью clang. Это значение по умолчанию в OS X, FreeBSD и OpenBSD.make ARCH=wasm32
для сборки библиотеки wasm32 с помощью clang.make ARCH=i386
чтобы принудительно выполнить сборку для i386. Другие поддерживаемые архитектуры: i486, i586 и i686. GCC 4.8 — это минимальное требование для корректной генерации кода на старых 32-битных архитектурах. Кросс-сборка. В качестве примера возьмем riscv64
:
qemu-riscv64-static
, gcc-riscv64-linux-gnu
ARCH=riscv64
TRIPLE= $ARCH -linux-gnu
make ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
make -C test ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-float
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-double
mkdir build
и перейдите в него с помощью cd build
.cmake /path/to/openlibm/
или сгенерировать проект с выбранной системой сборки, например cmake /path/to/openlib/ -G "MinGW Makefiles"
.cmake --build .
.Конфигурация CMake по умолчанию создает общую библиотеку, ее можно легко настроить с помощью параметра конфигурации BUILD_SHARED_LIBS.
Поддержка PowerPC для openlibm была любезно спонсирована IBM.