更改源后编译 GNU libm s_sin.c

Compilng s_sin.c of GNU libm after changing the source

我想稍微修改一下 libm 的 sin 函数(来源:s_sin.c)来试验一些数值。但是,我看不到如何编译修改后的源代码。

我想避免做“./configure, make”。因此,为了解决所有依赖关系,我尝试在我的系统中用 libm.a 编译 s_sin.c。但是我的编译器很快就拒绝了编译,因为它在源文件中找不到头文件"mydefs.h"。源码中有很多这样的头文件。

我的问题是:尝试更改 GNU libm 中的单个数学函数并编译它的最简单方法是什么?谢谢。

I would like to avoid doing "./configure, make".

你无法避免这种情况(因为这是通常的构建过程),但你可以将更多参数传递给 configure。先尝试 configure --help。您可以避免下一个 make install(或将一些 DESTDIR=/tmp/somedir/ 传递给它)。

My question is: what is the easiest way for experimenting with changing a single math function in GNU libm and the compiling it?

我会推荐一个小 chroot(2)-ed environment. Debian has schroot and debootstrap 以使其相当容易。

然后你仍然做 ./configure - 可能使用不同的 --prefix ... - 然后是 make。你可能想要也可能不想要 make install

也许可以考虑使用 musl-libc,因为它可以与您系统的 libc

共存

顺便说一句,sin 是一个不寻常的函数(就像 -lm 中的许多函数一样)。你可以在那里设置一个断点来检查你的大多数系统程序不使用它。不要忘记备份系统的 libc 并准备一些 static shell 运行 以防万一(也许 sash,因为很多核心实用程序是内置的:静态 sash 包含 内部 变体 tarcpmv 等...不依赖于任何外部 libc)

您还可以(临时)在某些 header 中添加一些 #define sin(x) mysin(x)(例如 /usr/include/math.h)或使用 LD_PRELOAD tricks.

(不清楚你真正想做什么。libm.so只被程序使用,而不是自己;你想做什么实际的数值实验??).