【问题标题】:Boost library name missing version tagBoost 库名称缺少版本标记
【发布时间】:2011-02-16 13:29:03
【问题描述】:

我已经根据文档使用:

bjam.exe toolset=msvc-9.0 variant=release link=shared stage

这给了我文件夹阶段的所有库。我为每个 boost 包获取 3 个文件,例如: boost_regex-vc90-mt-1_45.dll
boost_regex-vc90-mt-1_45.lib
boost_regex-vc90-mt.lib

什么是没有版本标签的lib文件? boost_regex-vc90-mt-1_45.lib 和 boost_regex-vc90-mt.lib 有什么区别?

boost 文档声明如下:
“扩展名:根据操作系统的常规约定确定。在大多数 unix 风格的平台上,静态库(存档)和共享的扩展名是 .a 和 .so在 Windows 上,.dll 表示共享库,.lib 表示静态或导入库。在 unix 变体上的工具集支持的情况下,添加了完整版本扩展名(例如“.so.1.34”)和符号链接到库文件,名称不带尾随版本号,也将被创建。"
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#library-naming

没有版本标签的文件是库文件的符号链接? Windows中的符号链接?我不明白。

【问题讨论】:

    标签: c++ windows boost naming-conventions naming


    【解决方案1】:

    我想这是 Windows 上的副本。构建脚本尝试像在 unix 上一样进行符号链接,但因为它在 windows 上不受支持,所以它被定义为复制。

    在 unix 上,您通常将 libboost_regex.so 作为符号链接到 libboost_regex.so.1.45.0。编译器查找libboost_regex.so,读取链接并将全名存储在二进制文件中,因此即使libboost_regex.so.1.46.0,动态链接器也会为该程序加载libboost_regex.so.1.45.0,但新程序链接到最新版本。构建脚本似乎试图尽可能多地在 Windows 上模拟这种行为。

    【讨论】:

    • windows vista 及更高版本支持符号链接(但创建它们需要管理员权限)。
    • 有什么理由我应该在 Windows 或 Linux 上保留没有版本标签的文件?
    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2013-06-26
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多