我正在尝试构建libc / NPTL的修改版本。我的ubuntu版本显示它是版本2.13。我想创建一个单独的libc / nptl / libpthreads,并希望使用动态加载将其用于现有应用程序(如apache),而无需替换现有的glibc / libpthreads。我是内核编程和动态加载的新手。您能否举例说明如何使用动态加载功能来使用libc / NPTL。
答案 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
部分中(新字符串不得长于旧字符串)。
我是内核编程新手
你的问题没有与内核编程无关。