Скомпилируйте и используйте 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 (новая строка должна быть не длиннее старой).

Я новичок в программировании ядра

Ваш вопрос не имеет ничего общего с программированием ядра.

Другие вопросы по тегам