共有ライブラリと静的ライブラリに関するいくつかの質問があります。私がしたことを教えてください。また、gccコマンドとlibarith.aのサイズを使用する共有ライブラリは6KB、libarith.soのサイズは18KBです。ライブラリには同じ機能があります。私たちが共有ライブラリより静的ライブラリを使用すると、exeファイルのサイズがもっと大きい理由
私は1つの簡単な関数を使用(たとえば追加(A、B))のexeファイルのサイズが16.1キロバイトである私のmake.cファイルで、これらのgccコマンドを使用して静的ライブラリをリンクし、
gcc -L/cygdrive/c/cpros make.c -larith.a # used a static library
。
次のようにmake.cファイルで同じ機能(同じadd(a、b))を使用しましたが、今回は共有ライブラリを使用しています。
gcc make.c /cygdrive/c/cpros/libarith.so #used a shared library
残念ながら、exeファイルのサイズは12.1 KBです。どのように思う? libarith.soのサイズはlibarith.aと比べて18 KBです。ちょうど6 KBです。最後に、共有ライブラリを使用して生成されたexeファイルは静的ライブラリに比べて少なくなります。
誰でも私にその理由を教えてもらえますか?共有ライブラリが少ないメモリを消費する場合は、共有ライブラリを常に使用しないでください。共有ライブラリをいつ使用するのか、またいつ静的ライブラリを使用するのかを教えてください。
はい私が-fPICを使って共有ライブラリを作成していたとき、それは私に警告の独立したコードを与えました。その警告は実際にはどういう意味ですか?