0

我正在尝试构建 libc/NPTL 的修改版本。我的 ubuntu 版本显示它是 2.13 版本。我想创建一个单独的 libc/nptl/libpthreads,并希望将它用于使用动态加载而不替换现有 glibc/libpthreads 的现有应用程序(如 apache)。我是内核编程和动态加载的新手。您能否提供一个如何使用动态加载功能使用 libc/NPTL 的示例。

4

1 回答 1

3

我想创建一个单独的 libc/nptl/libpthreads

这很容易:./configure --prefix=/u && make && make install. 恭喜,你现在有一个单独libc/lipthreads的下/u

并希望将其用于现有应用程序(如 apache)

目前尚不清楚您是想将新libc的二进制文件与现有(预构建的)二进制文件一起使用,还是与您可以重建的二进制文件一起使用。

如果是后者,只需添加-Wl,--dynamic-linker=/u/lib64/ld-linux-x86-64.so.2(对于 64 位二进制文​​件),就完成了。

如果是前者,应用程序本身没有execve,您可以像这样调用它:/u/lib64/ld-linux-x86-64.so.2 /path/to/app.

如果应用程序exec自己运行,或者被您不想修改的大量 shell 脚本调用,那么您必须对应用程序进行二进制修补:将二进制文件部分中的/lib64/ld-linux-x86-64.so.2字符串替换为(新字符串必须是不比旧的长)。.dynstr/u/lib64/ld-2.13.so

我是内核编程新手

您的问题与内核编程无关。

于 2011-10-31T03:45:25.953 回答