プログラムのパフォーマンスを向上させるために、いくつかの libc 関数を自分でコーディングしたいと考えています (すべての libc ではありません!)。しかし、GCCはコンパイルされたプログラムでlibc関数の代わりにそれらを使用しますか、それとも無視しますか?
質問する
78 次
1 に答える
1
glibc のほとんどすべてのパブリック シンボルはウィーク リンクです。つまり、リンク時にウィーク シンボルよりも優先される独自の実装を提供できます。
あ、はい。同じ名前/引数で独自の関数を定義するだけで、代わりに使用されます。関数の実際の署名を確認するには、必ずヘッダー ファイルを調べてください。一部の関数は、別の関数に展開されるマクロである場合があります。
また、オーバーライドする関数を含む共有ライブラリを作成し、ダイナミック リンカーにそれをプリロードして、共有ライブラリ内の関数をオーバーライドすることもできます。詳細については、この質問を参照してください。
于 2013-10-13T12:26:06.410 に答える