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 的慷慨贊助。