2011-10-30 15 views
0

libc/NPTLの修正版をビルドしようとしています。私のubuntuバージョンはバージョン2.13であることを示しています。別のlibc/nptl/libpthreadsを作成し、既存のglibc/libpthreadsを置き換えずに動的ローディングを使用して既存のアプリケーション(Apacheなど)に使用したいと考えています。私はカーネルプログラミングと動的ロードのほうが新しいです。動的ロード機能を使用してlibc/NPTLを使用する方法の例を提供できますか?ubuntu x86_64アーキテクチャのソースからglibc-2.13をコンパイルして使用する

答えて

3

は、私は簡単だ、別のlibc/NPTL/libpthreadsを

を作成します:./configure --prefix=/u && make && make install。おめでとう、あなたが今/u

の下に別のlibc/lipthreadsを持っており、(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自体をし、または変更したくないシェルスクリプトの多数によって呼び出される場合、あなたはバイナリパッチにアプリケーションを持っています:バイナリの.dynstrセクションに/lib64/ld-linux-x86-64.so.2文字列を置換/u/lib64/ld-2.13.so(新しい文字列は古いものより長くならないようにする必要があります)。

私はあなたの質問は、カーネルプログラミングを行うには何も何を持っていない

をプログラミングするカーネルの新しいです。

関連する問題