Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost、bjam和符号链接_C++_Linux_Boost_Bjam - Fatal编程技术网

C++ Boost、bjam和符号链接

C++ Boost、bjam和符号链接,c++,linux,boost,bjam,C++,Linux,Boost,Bjam,我用bjam生成了一些Boost libraries,我得到了许多符号链接 对于日期和时间: libboost\u日期\u时间-gcc41-mt-1\u 39.a libboost\u date\u time-gcc41-mt-1\u 39.so->libboost\u date\u time-gcc41-mt-1\u 39.so.1.39.0 libboost_date_time-gcc41-mt-1_39.so.1.39.0 libboost\u date\u time-gcc41-mt.a

我用bjam生成了一些Boost libraries,我得到了许多符号链接

对于日期和时间:

libboost\u日期\u时间-gcc41-mt-1\u 39.a

libboost\u date\u time-gcc41-mt-1\u 39.so->libboost\u date\u time-gcc41-mt-1\u 39.so.1.39.0

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

libboost\u date\u time-gcc41-mt.a->libboost\u date\u time-gcc41-mt-1\u 39.a

libboost\u date\u time-gcc41-mt.so->libboost\u date\u time-gcc41-mt-1\u 39.so.1.39.0

为什么我不直接得到a和。那么? 为什么这3个符号链接? 为什么原始文件有一个如此复杂的名称。那么,发布版本提到了两次

难道不可能只有:

libboost\u日期\u时间-gcc41-mt-1\u 39.a libboost_date_time-gcc41-mt-1_39.so

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


注意:我是Linux的新手。

我不知道boost或bjam的具体情况

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


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

我不知道boost或bjam的具体情况

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


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

符号链接是在两个名称之间共享同一文件的一种方式。例如,如果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的链接存在,因此不关心版本号的构建可以使用这些库

对于共享库,有一个带有版本号的命名约定,因此完整的版本号位于末尾,以便生成系统可以精确控制版本号


有关详细说明,请参见

符号链接是在两个名称之间共享同一文件的一种方式。例如,如果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的链接存在,因此不关心版本号的构建可以使用这些库

对于共享库,有一个带有版本号的命名约定,因此完整的版本号位于末尾,以便生成系统可以精确控制版本号


有关详细说明,请参见

OK。这里的重点是命名约定。我不知道有一个命名约定,告诉我把版本号放在后面。谢谢,好的。这里的重点是命名约定。我不知道有一个命名约定,告诉我把版本号放在后面。非常感谢。