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