OpenLibm es un esfuerzo por tener una biblioteca matemática C ( libm
), portátil e independiente de alta calidad. Se puede utilizar de forma independiente en aplicaciones e implementaciones de lenguajes de programación.
El proyecto nació de la necesidad de tener una buena libm
para el lenguaje de programación Julia que funcionara de manera consistente en todos los compiladores y sistemas operativos, y en entornos de 32 y 64 bits.
OpenLibm se basa en Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD y DragonFly BSD. Se construye tanto con GCC como con clang. Aunque ampliamente probado y utilizado en las arquitecturas x86 y x86-64, OpenLibm también admite arm, aarch64, ppc64le, mips, wasm32, riscv, s390(x) y loongarch64.
make
en la mayoría de los sistemas, pero gmake
en BSD.make USEGCC=1
para compilar con GCC. Este es el valor predeterminado en Linux y Windows.make USECLANG=1
para compilar con clang. Este es el valor predeterminado en OS X, FreeBSD y OpenBSD.make ARCH=wasm32
para crear la biblioteca wasm32 con clang.make ARCH=i386
para forzar una compilación para i386. Otras arquitecturas compatibles son i486, i586 e i686. GCC 4.8 es el requisito mínimo para una generación de código correcta en arquitecturas antiguas de 32 bits. Construcción cruzada Tome riscv64
como ejemplo:
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
y navegue hasta él con cd build
.cmake /path/to/openlibm/
o genere un proyecto con el sistema de compilación de su elección, por ejemplo cmake /path/to/openlib/ -G "MinGW Makefiles"
.cmake --build .
.La configuración predeterminada de CMake crea una biblioteca compartida, esto se puede configurar fácilmente usando la opción de configuración BUILD_SHARED_LIBS.
El soporte de PowerPC para openlibm fue gentilmente patrocinado por IBM.