LoginSignup
13
13

More than 3 years have passed since last update.

OS別のライブラリ拡張子まとめ

Last updated at Posted at 2019-07-12

OSごとのライブラリのタイプについてざっくりしりたいなと思って調べたのでそのメモです。
知らなくてすごく困ったことはないのですが、まいど知識があいまいなことにモヤモヤしていました。

OS別のライブラリ拡張子

静的リンク 動的リンク 動的ロード
macOS *.a *.dylib *.bundle or *.so
Linux系 *.a *.so *.so
Windows *.lib *.dll *.dll

静的リンク

コンパイル時に実行ファイルに組み込まれる。

動的リンク

実行ファイル起動時に組み込まれる。なのでそのライブラリが見つからないと起動できない。

動的ロード

プログラム上でそのライブラリを読み込むタイミングでロードされる。
(処理が終わったら毎度解放するのだろうか?)
なので、ライブラリがなくてもその部分が実行されるまでは動く。

速度

静的リンク > 動的リンク > 動的ロード
そりゃそうですね。

その他メモ

  • macOSとLinux系のライブラリは拡張子が同じものもある( *.a, *.so )が、互換性はない。
  • macOSの動的ロードの拡張子、Appleとしては *.bundleを使ってほしいが、linuxからの移植だったりすると互換性のため*.soが使われることもしばしばあるという記述を見た。   互換性ゆうても、バイナリ自体は違うので、使用するプログラム側でOS別に読み込むライブラリ名を切り替えなくてよいとかそうゆう意味かな。
  • windowsはやっぱり独自路線だなあ。
13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13