我想略微修改libm的sin
函数(来源:s_sin.c)来试验数值。但是,我没有看到如何编译修改后的源代码。
我想避免做“./configure,make”。因此,为了解决所有依赖关系,我尝试在我的系统中使用libm.a编译s_sin.c。但是我的编译器很快拒绝编译,因为它无法在源文件中找到头文件“mydefs.h”。源中有许多这样的头文件。
我的问题是:尝试在GNU libm中更改单个数学函数并编译它的最简单方法是什么?谢谢。
答案 0 :(得分:2)
我想避免做“./configure,make”。
您无法避免(因为这是通常的构建过程),但您可以将更多参数传递给configure
。首先尝试configure --help
。您可以避免使用下一个make install
(或将DESTDIR=/tmp/somedir/
传递给它。)
我的问题是:尝试在GNU libm中更改单个数学函数并编译它的最简单方法是什么?
我建议使用chroot(2)个小环境。 Debian有schroot和debootstrap来使这个变得相当容易。
然后你仍然./configure
- 可能使用不同的--prefix
...-然后是make
。您可能不想要make install
考虑使用musl-libc,因为它可以与您的系统libc
共存
顺便说一句,sin
是一个不常见的功能(就像-lm
中的许多功能一样)。您可以在那里设置断点以检查大多数系统程序是否不使用它。不要忘记备份系统的libc
并运行一些静态 shell以防万一(可能是sash
,因为内置了许多核心实用程序:静态{{1} }包含sash
,tar
,cp
等的内部变体...不依赖于任何外部mv
)
您还可以在某些标题中添加(暂时)某些libc
(例如#define sin(x) mysin(x)
)或使用LD_PRELOAD
tricks。
(目前还不清楚你真正想要做什么。/usr/include/math.h
仅供程序使用,而不是单独使用;你想做什么实际的数值实验?)。< / p>