静的ライブラリと動的ライブラリを試していました。2つの.cファイル(たとえば、file1.c、file2.c)と2つの.hファイルを作成しました。これらのファイルには、それぞれ定義および宣言されたいくつかの関数が含まれています。
また、上記の2つの.cファイルの関数を呼び出す新しい.cを作成しました。
共有ライブラリ/静的ライブラリを使用した場合に取得する実行可能ファイルのサイズを確認したかったので、ファイルfile1の.osから静的ライブラリ(libstat.a)と共有ライブラリ(libshar.so)を作成しました。 cおよびfile2.c。
これらのライブラリをメインの.cにリンクすると、動的ライブラリの場合、実行可能ファイルのサイズが大きくなることがわかります。それは予想外ですよね?共有ライブラリを使用する場合、ライブラリは実行時に読み込まれるのに、なぜサイズが大きくなるのですか?
次のコマンドを使用しています。
静的ライブラリの場合
gcc -c file1.c file2.c
ar -cvq libstat.a file1.o file2.o
gcc -o ex1 mainprg.c -L . -lstat
動的/共有ライブラリの場合
gcc -c -fpic file1.c file2.c
gcc -shared file1.o file2.o -o libshar.so
gcc -o ex2 mainprg.c -L . -lshar
libshar.soのサイズはlibstat.oよりも大きく、ex2のサイズはex1よりも大きいことがわかりました。この結果は逆になると思いました。誰かが私に理由を説明できますか?