openlibm
v0.8.4
OpenLibm 致力于打造一个高质量、可移植、独立的 C 数学库 ( libm
)。它可以在应用程序和编程语言实现中独立使用。
该项目的诞生是因为需要为 Julia 编程语言提供一个良好的libm
,使其能够在编译器和操作系统以及 32 位和 64 位环境中一致工作。
OpenLibm 构建于 Linux、macOS、Windows、FreeBSD、OpenBSD、NetBSD 和 DragonFly BSD 之上。它使用 GCC 和 clang 构建。尽管在 x86 和 x86-64 架构上进行了大量测试和广泛使用,但 OpenLibm 还支持 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
使用 clang 构建 wasm32 库。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 的慷慨赞助。