2011-10-30 3 views
0

수정 된 버전의 libc/NPTL을 빌드하려고합니다. 내 우분투 버전은 2.13 버전임을 보여줍니다. 별도의 libc/nptl/libpthreads를 만들고 기존 glibc/libpthreads를 대체하지 않고 동적 로딩을 사용하여 기존 응용 프로그램 (예 : apache)에 사용하고 싶습니다. 커널 프로그래밍과 동적로드에 익숙하지 않습니다. 동적 로딩 기능을 사용하여 libc/NPTL을 사용하는 방법에 대한 예제를 제공 할 수 있습니까?우분투 x86_64 아키텍처 용 소스에서 glibc-2.13을 컴파일하고 사용하십시오.

답변

3

나는 쉽게 별도의 libc/NPTL/libpthreads

을 만들려면 : ./configure --prefix=/u && make && make install. 축하합니다, 당신은 지금 별도의 libc/lipthreads에서 /u

을 가지고 있고 (그것은 당신이 기존과 새 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 자체를 수행하거나 수정하지 않으려는 쉘 스크립트의 무리에 의해 호출됩니다 경우에, 당신은해야합니다 바이너리 패치 응용 프로그램을 : 이진의 .dynstr 섹션에 /lib64/ld-linux-x86-64.so.2 문자열을 대체 /u/lib64/ld-2.13.so (새 문자열은 이전 것보다 길지 않아야 함).

나는

귀하의 질문은 무엇이든지 커널 프로그래밍 할 수 아무것도이 없습니다 프로그래밍 커널에 새로운 오전.

관련 문제