我们为什么要在构建库时设置符号链接?

时间:2013-06-07 07:32:20

标签: c++ dll cmake

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

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

我无法理解为什么图书馆需要符号链接。而且,在我看来,符号链接总是与库的版本有关,它们之间是否有任何关系?谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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版本。