2

複数のプラットフォーム用に C++ でライブラリを構築することに関連する質問があります。多くのライブラリが「シンボリック リンク」を期待していることに気付きました。CMake では、シンボリック リンクは次のコードによって行われます。

set_target_properties({library_name}, PROPERTIES VERSION, ${library_string_version} SOVERSION {library_string_shortversion})

ライブラリにシンボリックリンクが必要な理由がわかりません。さらに、シンボリックリンクは常にライブラリのバージョンに関連しているように見えますが、それらの間に何らかの関係はありますか? ありがとう!

4

2 に答える 2

2

これにより、ライブラリのサイド バイ サイド バージョン管理が可能になります。

libfoo.so -> libfoo.2.so
libfoo.1.so -> libfoo.1.23.so
libfoo.1.23.so
libfoo.2.so -> libfoo.2.1.so
libfoo.2.1.so

このように、libfoo.so常に最新バージョンです。(互換性の理由から) バージョン 2 ではなくバージョン 1 が必要であることがわかっている場合は、 にリンクしlibfoo.1.soて、常に最新の v1 バージョンを使用できます。

于 2013-06-07T07:36:29.603 に答える
2

シンボリック リンクを使用する利点は、新しいバージョンでライブラリを簡単に更新し、一貫した名前を維持しながら、同時にライブラリ名のバージョンにアクセスできることです。したがって、アプリケーションは、更新した場合でも、常に同じ名前に対してリンクできます。特定のバージョンが必要な場合にのみ、代わりにそのバージョンにリンクできます。また、アプリケーションはどこから来たのかを知る必要がないため、必要に応じて簡単に移動できます。

MS Windows にもシンボリック リンクがあればいいのにと思うことがよくあります。

于 2013-06-07T07:35:21.187 に答える