2017-10-29 4 views
0

printf()の結果にprintf()にあるものを出力するのではなく、他のコンポーネントが含まれるようにUbuntoのglibcを修正します。たとえば、printf( "Hello World")と入力すると、その結果にprintf()の前に自分の名前が含まれている結果が「J.Doe、Hello World」になります。 glibcのいくつかのファイルを変更することで、どうすればいいですか?Ubuntuでglibcを修正してprintf()関数の結果を変更する方法

+1

これは非常に悪い考えです。本当に 'printf'をオーバーロードしたいのであれば、独自のバージョンを書いてリンクしてください。自分のライブラリを維持しようとしないでください。 –

+0

[しない](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

+0

***なぜ***あなたはこれをしたいですか?あなたはそれによって解決したい実際の問題は何ですか?あなたの質問がその完璧な例であるので、[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)について読んでみることをお勧めします。 –

答えて

3
  1. glibcパッケージをダウンロードします。私が扱ってきたバージョンはglibc-2.23.tar.gzです。
  2. ビルドできることを確認してください。
  3. Cプログラムは、/ usr/libにあるものではなく、新しくビルドされたlibcにリンクできることを確認してください。これは非常に簡単です(システムに依存する、巨大で複雑なパッケージです)。
  4. これで、printfの修正を開始する準備が整いました。すべてのprintf変種の共通コードはstdio-common/vfprintf.cにあります。注意してください!複雑で洗練されたコードです。これは、学ぶ最も簡単で分かりやすい実装ではありません。

printfのより簡単でわかりやすい実装で遊んで学ぶには、C FAQ listに1つあります。

関連する問題