更改源代码后编译GNU libm的s_sin.c

时间:2018-06-17 16:01:01

标签: c glibc libm

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

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

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

1 个答案:

答案 0 :(得分:2)

  

我想避免做“./configure,make”。

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

  

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

我建议使用chroot(2)个小环境。 Debian有schrootdebootstrap来使这个变得相当容易。

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

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

顺便说一句,sin是一个不常见的功能(就像-lm中的许多功能一样)。您可以在那里设置断点以检查大多数系统程序是否不使用它。不要忘记备份系统的libc并运行一些静态 shell以防万一(可能是sash,因为内置了许多核心实用程序:静态{{1} }包含sashtarcp等的内部变体...不依赖于任何外部mv

您还可以在某些标题中添加(暂时)某些libc(例如#define sin(x) mysin(x))或使用LD_PRELOAD tricks

(目前还不清楚你真正想要做什么。/usr/include/math.h仅供程序使用,而不是单独使用;你想做什么实际的数值实验?)。< / p>