我已经知道如何在旧版本(例如 2.19)旁边构建新版本的 Glibc(例如 2.3)。
我遵循了 https://www.tldp.org/HOWTO/html_single/Glibc-Install-HOWTO/
而是在 Glibc 中编译整个库,我只想构建数学库 (libm.so)。
如何在 ubuntu 中只重新编译 libm.so?
第二个问题是可以使用 clang 编译器在 glibc 中重新编译该特定部分(数学)吗? 我发现由于符合标准等原因,我无法使用 clang 重新编译整个 Glibc。
最佳答案
libm
依赖于动态加载器和 libc
的内部结构,例如 IFUNC 解析器。您不能简单地从较新版本中获取 libm
并将其安装在具有较旧 glibc 版本的系统上。不久前,有人提出了一些补丁来选择性地启用此功能:
- > Introduce
--enable-math-noprivate
- > math: Use local
strto_*nan
function innan*
forCONFIG_MATH_NOPRIVATE
- > math: Merge
strtod_nam_*.h
intomath-type-macros-*.h
(这个实际上是合并的。)
即使有了这些补丁,仍然需要使用 --disable-multi-arch
构建 glibc,从而导致某些数学函数的性能显着下降。
关于ubuntu - 如何构建 glibc 包的数学库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58964628/