Скомпилируйте и используйте glibc-2.13 из исходного кода для архитектуры Ubuntu x86_64
Я пытаюсь построить модифицированную версию libc/NPTL. Моя версия Ubuntu показывает, что это версия 2.13. Я хочу создать отдельный libc / nptl / libpthreads и хочу использовать его для существующего приложения (например, apache), использующего динамическую загрузку без замены существующих glibc / libpthreads. Я новичок в программировании ядра и динамической загрузки. Можете ли вы привести пример того, как использовать libc / NPTL, используя возможность динамической загрузки.
1 ответ
Я хочу создать отдельный 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
сам по себе или вызывается множеством сценариев оболочки, которые вы не хотите изменять, тогда вам придется выполнить двоичное исправление приложения: заменить /lib64/ld-linux-x86-64.so.2
строка в .dynstr
раздел двоичного файла с /u/lib64/ld-2.13.so
(новая строка должна быть не длиннее старой).
Я новичок в программировании ядра
Ваш вопрос не имеет ничего общего с программированием ядра.