2

我有一个与在 C++ 中为多个平台构建库有关的问题。我注意到许多图书馆都希望有一个“符号链接”。使用 CMake,符号链接由以下代码完成:

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

我不明白为什么图书馆需要符号链接。而且,在我看来,符号链接总是与库的版本有关,它们之间有什么关系吗?谢谢!

4

2 回答 2

2

使用符号链接的优点是您可以轻松地更新库,使用新版本,保持一致的名称,同时可以访问库名称中的版本。因此,即使您更新它,应用程序也始终可以链接到相同的名称。只有当他们需要特定版本时,他们才能链接到该版本。如果需要,它还可以更容易地移动它,因为应用程序不需要知道它来自哪里。

我经常希望我在 MS Windows 中也有符号链接,因为它让生活更轻松。

于 2013-06-07T07:35:21.187 回答
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始终最新版本。如果您知道(出于兼容性原因)您需要版本 1 而不是版本 2,您可以链接到libfoo.1.so,并且始终拥有最新的 v1 版本。

于 2013-06-07T07:36:29.603 回答