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-gnuARCH=riscv64
TRIPLE= $ARCH -linux-gnu
make ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
make -C test ARCH= $ARCH TOOLPREFIX= $TRIPLE - -jqemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-float
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-doublemkdir build и перейдите в него с помощью cd build .cmake /path/to/openlibm/ или сгенерировать проект с выбранной системой сборки, например cmake /path/to/openlib/ -G "MinGW Makefiles" .cmake --build . .Конфигурация CMake по умолчанию создает общую библиотеку, ее можно легко настроить с помощью параметра конфигурации BUILD_SHARED_LIBS.
Поддержка PowerPC для openlibm была любезно спонсирована IBM.