【发布时间】:2011-12-18 02:13:16
【问题描述】:
我正在尝试构建 libc/NPTL 的修改版本。我的 ubuntu 版本显示它是 2.13 版本。我想创建一个单独的 libc/nptl/libpthreads,并希望将它用于使用动态加载而不替换现有 glibc/libpthreads 的现有应用程序(如 apache)。我是内核编程和动态加载的新手。您能否提供一个如何通过动态加载功能使用 libc/NPTL 的示例。
【问题讨论】:
我正在尝试构建 libc/NPTL 的修改版本。我的 ubuntu 版本显示它是 2.13 版本。我想创建一个单独的 libc/nptl/libpthreads,并希望将它用于使用动态加载而不替换现有 glibc/libpthreads 的现有应用程序(如 apache)。我是内核编程和动态加载的新手。您能否提供一个如何通过动态加载功能使用 libc/NPTL 的示例。
【问题讨论】:
我想创建一个单独的 libc/nptl/libpthreads
这很简单:./configure --prefix=/u && make && make install。恭喜,您现在在/u 下有一个单独的libc/lipthreads
并希望将其用于现有应用程序(如 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脚本调用,那么您必须对应用程序进行二进制修补:替换@987654330中的/lib64/ld-linux-x86-64.so.2字符串带有/u/lib64/ld-2.13.so 的二进制文件的@ 部分(新字符串不得长于旧字符串)。
我是内核编程的新手
您的问题与内核编程无关。
【讨论】: