转自:http://blog.csdn.net/yasi_xi/article/details/8660549

link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用 static方式。

runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方 式,这样runtime-link和link一共可以产生4种组合方式。虽然它和link属性没有直接关系,但我们习惯上,一个工程如果用动态链接那么所有库都用动态链接,如果用静态链接那么所有库都用静态链接。所以这样其实只需要编译2种组合即可,即link=shared runtime-link=shared和link=static
runtime-link=static。

还有人总结windows下boost库的命名特点:

link=static runtime-link=static 得到 libboostxxxxx.lib 

link=shared runtime-link=shared 得到 boostxxxx.lib 和 boostxxxx.dll 

由以上的文件夹层次结构基本就可以得出结论: 

1、以“lib”开头的是“link-static”版本的,而直接以“boost”开头的是“link-shared”版本的。 

2、有“d”的为debug版本,没有的则是release版本。 

3、有“s”的为“runtime-link-static”版本,没有的则是“runtime-link-shared”版本。 

4、有“mt”的为“threading-multi”版本,没有的则是“threading-single”版本。

一位在微软做过编译器开发的大牛是这样解释的:

假设一个库A依赖于库B,我们自己的程序client依赖于库A,即:

 

那么,link指的是client->A,runtime-link指的是A -> B

配置                   链接过程                                           运行时需要的文件 

--------------------|-------------------------------------------------|--------- 

link=static         |  client通过A.a (A.lib)静态包含A;                | client 

runtime-link=static |  A通过B.a (B.lib)静态包含B;                     | 

                    |  不关 .so .dll的事                              | 

--------------------|-------------------------------------------------|--------- 

link=static         |  client通过A.a (A.lib)静态包含A;                |  client 

runtime-link=shared |  在运行时,client要动态调用B.so (B.dll)           |  B.so (B.dll) 

--------------------|-------------------------------------------------|--------- 

link=shared         |  client会包含A.a (A.lib);                       |  client 

runtime-link=shared |  A会包含 B.a (B.lib);                           |  A.so (A.dll) 

                    |  但都只保存动态库的真正实现的stub,                |    B.so (B.dll) 

                    |  运行时通过stub去动态加载                        | 

                    |      A.so (A.dll)                               | 

                    |      B.so (B.dll)                               | 

                    |  中的实现                                       | 

--------------------|-------------------------------------------------|-------- 

link=shared         |  client会包含A.a (A.lib),但只包含真正实现的stub;|   client 

runtime-link=static |  A通过B.a (B.lib)静态包含B;                     |   A.so (A.dll) 

                    |  运行时,client会动态调用A.so (A.dll)            |

boost的link 和 runtime-link,搭配shared 和 static的更多相关文章

  1. link 和 runtime-link,搭配shared 和 static(转)

    原文转自 http://blog.csdn.net/yasi_xi/article/details/8660549 参考: http://bbs.sjtu.edu.cn/bbscon,board,C, ...

  2. Symbolic link and hard link的区别(linux)

    --Symbolic link and hard link的区别(linux) --------------------------------------------------2014/06/10 ...

  3. Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  4. 菜鸟学Linux - Hard Link与Symbolic Link

    在学习Hard Link与Symbolic Link之前,需要大概了解一下inode与data block.在Linux的文件系统中,一个文件对应一个inode与若干个data block.inode ...

  5. Native libraries .so.XY failing to link at runtime

    What you need to do is edit the configure file. And find out this: SLIBNAME='$(SLIBPREF)$(FULLNAME)$ ...

  6. CSS教程:vlink,alink,link和a:link

    超链接文字的状态可以通过伪类选择符+样式规则来控制. 一组专门的预定义的类称为伪类,主要用来处理超链接的状态.超链接文字的状态可以通过伪类选择符+样式规则来控制.伪类选择符包括: 总: a 表示 超链 ...

  7. VC中LINK 2001 和 LINK 2009 的错误的解决

    最近将两个开源C++项目编译成windows版本的时候遇到很多问题,关键是两个项目经过同事的修改之后,一个项目引用了另一个项目,两个项目的头文件中都有一些跨平台的关于数据类型,以及一些通用函数的定义, ...

  8. Windows中的硬链接和软链接(hard link 和 Symbolic link)

    先来了解一下Linux中的硬链接和软链接: Linux中的硬链接和软链接 Windows中的硬链接和软链接: 硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让 ...

  9. Linux文件链接hard link与symbolic link

    Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...

随机推荐

  1. URL重写的优缺点分析

    如何增强您网站地址的可读性.如何让搜索引擎快速收录到您的站点,这就需要优化您的Url,即Url的重写技术,大家熟悉的可能有很多服务器都提供Url重写技术,以前我们用的最多的就是Apache,Jboss ...

  2. (六)C#中判断空字符串的三种方法性能分析

    三种方法分别是: string a=""; 1.if(a=="") 2.if(a==string.Empty) 3.if(a.Length==0) 三种方法是等 ...

  3. 使用Gson解析复杂的json数据

    Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...

  4. js与flash结合使用

    最近,做个了一个falsh和js 通信的小东西. flash负责接收参数和返回结果.js负责处理信息,接收返回结果,将结果返回到服务器端. 听着很复杂,做起来页面还是很简单的.用的技术还是不少的,fl ...

  5. MXF素材文件交换格式深入研究

    MXF素材文件交换格式深入研究   2012-09-03 | 访问次数:262 | 新闻来源:电科网               [摘要]DCI规定数字电影需采用MXF封装音视频等节目素材内容.为了深 ...

  6. 【HDOJ】5446 Unknown Treasure

    1. 题目描述题目很简单,就是求$C(n,m) % M$. 2. 基本思路这是一道应用了众多初等数论定理的题目,因为数据范围较大因此使用Lucas求$C(n,m) % P$.而M较大,因此通过$a[i ...

  7. 在cmd中登录ftp服务器

    http://jingyan.baidu.com/article/0bc808fc8778ee1bd485b93b.html C:\Users\Administrator>ftpftp> ...

  8. Android Studio AVD和SDK Manager灰色不能点击的问题。

    之前安装完Android Studio之后,迫不及待的打开,新建项目,发现模板新建之后里面没有文件,并且AVD Manager和SDK Manager 那一排的按钮灰色不能点. 之后查阅资料无果,最后 ...

  9. ORA-12154 终极解决办法

    PLSQL连接Oracle数据库总出现12514分2中情况: 1.无法解析指定的连接标识符: 解决办法:我的电脑---属性---高级---环境变量   删除Path变量中C:\oracle\produ ...

  10. 【笨嘴拙舌WINDOWS】GDI绘制区域

    在默认情况下,Gdi绘画操作的使用白纸(窗口的客户区)黑字(Pen的颜色)!前面我们已经讲过如何改笔,现在来学习改变白纸(GDI的绘制区域) 正常的纸为一个矩形形状!有时候小孩不小心撕掉纸的一角,不小 ...