从ubuntu x86_64架构的源代码编译并使用glibc-2.13

时间:2011-10-30 03:25:51

标签: pthreads glibc nptl

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

1 个答案:

答案 0 :(得分: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脚本调用,那么您将不得不对应用程序进行二进制修补:replace /lib64/ld-linux-x86-64.so.2 string在带有.dynstr的二进制文件的/u/lib64/ld-2.13.so部分中(新字符串不得长于旧字符串)。

  

我是内核编程新手

你的问题没有与内核编程无关。