12

LinuxとWindowsの両方で趣味で開発したアプリケーションをリリースしたいです。このアプリケーションは、ブースト(および場合によっては他のライブラリ)に依存します。この種のアプリケーション(チェスエンジン)の標準は、実行可能ファイルと、場合によってはいくつかのヘルパーファイルのみを提供することです。

実行可能ファイルに依存関係がないように、ライブラリを静的にリンクすることをお勧めします。したがって、エンドユーザーは実行可能ファイルをディレクトリに配置して使用を開始できます。

ただし、オンラインで調査を行っているときに、静的にリンクされたライブラリについて否定的なコメントを見つけました。静的にリンクされたライブラリを使用するアプリケーションは移植性が低く、非常に類似したシステムのシステムでのみ実行されると主張する人もいました。

では、静的にリンクするライブラリの長所と短所は何ですか?

実行可能ファイルが大きくなることはすでに知っています。しかし、なぜそれが私のアプリケーションの移植性を低下させるのかわかりません。

4

4 に答える 4

6

長所:
依存関係はありません。

短所:
OSがライブラリの共有コピーを使用できなくなるため、メモリ使用量が増加します。
ライブラリを更新する必要がある場合は、アプリケーションを再構築する必要があります。これは、セキュリティが修正されたライブラリにとって二重に重要です。

もちろん、移植性の大きな問題は、ソースコードの配布がないことです。

于 2010-03-16T15:37:05.143 に答える
1

含める静的ライブラリ「A」が関数「B」に依存しているとしましょう。この依存関係をターゲットシステムで満たすことができない場合、プログラムは実行されません。

ただし、ダイナミックリンクを使用している場合、ユーザーは「B」の代わりに関数「C」を使用する別のバージョンのライブラリ「A」をインストールして、正常に実行できるようにすることができます。

于 2010-03-16T15:38:25.130 に答える
0

ライブラリを静的にリンクする場合、リンクしたライブラリについてユーザーのシステムもチェックするスマートを追加しない限り、実行可能ファイルを更新するまで、それらのバージョンのライブラリを使用するようにアプリケーションをロックします。セキュリティホールが発生し、更新が発生します。(チェスエンジンの場合、それほど問題はないかもしれませんが、誰が知っていますか。)

于 2010-03-16T15:38:02.317 に答える
0

ダイナミックリンクライブラリでは、ライブラリにXと表示されている場合、リンクしたものがユーザーシステムで利用できないと、コードが不当にクラッシュし、エンドユーザーが不思議に思うようになります。
一方、静的ライブラリの場合、すべてが実行可能ファイルに融合されているため、上記のような状態が発生しない可能性がありますが、実行可能ファイルは非常にかさばります。

ただし、動的にリンクされたライブラリでの上記の問題は、動的ロードによって解消できます。

于 2010-03-16T16:01:23.673 に答える