首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost、bjam和符号链接

Boost、bjam和符号链接
EN

Stack Overflow用户
提问于 2010-01-28 18:27:29
回答 2查看 1.6K关注 0票数 0

我用bjam生成了一些Boost库,我得到了很多符号链接。

对于date_time:

libboost_date_time-gcc41-mt-1_39.a

libboost_date_time-gcc41-mt-1_39.so -> libboost_date_time-gcc41-mt-1_39.so.1.39.0

libboost_date_time-gcc41-mt-1_39.so.1.39.0

libboost_date_time-gcc41-mt.a -> libboost_date_time-gcc41-mt-1_39.a

libboost_date_time-gcc41-mt.so -> libboost_date_time-gcc41-mt-1_39.so.1.39.0

为什么我不直接买.a和.so呢?为什么是这3个符号链接?为什么原始文件的.so名称如此复杂,发布版本被提到了两次?

有没有可能只有:

libboost_date_time-gcc41-mt-1_39.a libboost_date_time-gcc41-mt-1_39.so

谢谢你的帮助。我不知道如何处理这些符号链接。

注意:我是Linux的新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-28 18:41:17

符号链接是在两个名称之间共享同一文件的一种方式。例如,如果A链接到B,则打开A或B将向调用程序提供相同的数据。

在本例中,您有两个文件libboost_date_time-gcc41-mt-1_39.so.1.39.0和libboost_date_time-gcc41-mt-1_39.a。.so文件是共享库,而.a是静态库。

没有版本号libboost_date_time-gcc41-mt.so和libboost_date_time-gcc41-mt.a的链接是为了让那些不关心版本号的构建可以使用这些库。

对于共享库,有一个版本号的命名约定,这样完整的版本号就在最后,这样构建系统就可以精确地控制版本号。

有关完整解释,请参阅Boost docs

票数 2
EN

Stack Overflow用户

发布于 2010-01-28 18:38:22

我不知道任何特定于boost或bjam的东西。

但是最后两个,如果你看到的话是独立于版本的。因此,此.so或.a文件的任何使用者都可以使用基本名称来实现它们的目的。如果有任何更新版本的库可用,可以将其放在那里,只需修改sym链接以指向新版本即可。通过这种方式,他们可以将两个版本都放在适当的位置,这样,如果任何人想要使用特定的版本,他们可以直接使用它,而不需要sym链接。那些不关心版本的人可以使用基本名称本身来获取最新版本!

我认为如果您在unix机器上安装不同版本的java,就会使用这种方法。至少,我记得我在我的Ubuntu上见过它。对于java的每个版本/更新,我们都有单独的文件夹。您有另一个文件夹sym链接,它总是指向最新的jre版本文件夹。如果您在现有版本(尤其是linux中的rpm包)的基础上安装了不同的版本,也可以看到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2153759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档