-4

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

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

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

4

1 回答 1

2

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

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

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

我会推荐一个小的chroot(2) -ed 环境。Debian 有schrootdebootstrap使这相当容易。

然后你仍然做 -./configure也许有一个不同的--prefix...- 后跟make. 你可能想要也可能不想make install

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

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

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

(目前尚不清楚您真正想要做什么。libm.so仅由程序使用,而不是由程序本身使用;您想做哪些实际的数值实验??)。

于 2018-06-17T17:03:52.993 回答