我有一个开源项目依赖于另一个开源项目(让我们称之为其他项目X)。两者都是用C语言编写的。我必须破解X才能使多线程工作。这在尝试打包分发代码时会导致一些问题。为了让事情变得更容易,我刚刚将我的整个X以及我制作的一些小黑客包括在内。
我现在想做一些更复杂的事情,以便保持X的改进功能(它经常发布而我的不发布),而不必每次都在我的项目中重新打包整个项目(我的黑客) X有一个版本。
只需要覆盖3或4个函数。我可以按照IBM Tutorial中的内容进行操作,但是如何修改Makefile.am以生成该文章中建议的Makefile更改?总而言之,本文建议使用与我想要覆盖的签名(在名为libfuncs.c的文件中)相同的签名编写自己的函数,然后将以下“libs”目标添加到makefile中:
all: libs setresgid-tester
libs: libfuncs.c
gcc -shared -Wl,-soname,libfuncs.so.1 -o libfuncs.so.1.0 libfuncs.c
ln -s libfuncs.so.1.0 libfuncs.so.1
ln -s libfuncs.so.1 libfuncs.so
setresgid-tester: setresgid-tester.c
gcc -o setresgid-tester setresgid-tester.c
所有这一切对我都有意义。但是,我需要做的是使用autotools为我创建这个“libs”目标。我有一个Makefile.am现在运行良好。如何修改它以产生上述所需的结果?在autotools文档中很难找到,但我可能还没知道到底要找什么。
如果有帮助,我很乐意提供更多详细信息。提前谢谢。