我对是否链接 libboot_*-mt 变体以及它们的实际用途有点困惑。
我在 Centos 6 上使用 boost 1.46.0 的自定义反向移植。该构建生成 /usr/lib64/libboost_thread-mt.so.7 以及 -mt 和其他库的标准版本。
我编写了一个单元测试程序,它使用线程将计算存储在 boost::future 中。要链接该测试,我必须添加 -lboost_thread-mt。但是我不需要更改其他 boost -l args 来使用 -mt 版本。
我已经阅读了boost 站点上的Library Naming 部分,但我不清楚“表明该库是在启用多线程支持的情况下构建的。没有多线程支持的库可以通过缺少 -mt 来识别”实际上是什么意思。
如果我与 -lboost_thread-mt 链接,是否需要切换到其他库的多线程感知版本?如果没有,我什么时候需要链接 -mt 变体?
是否有建议仅在需要时才选择性地链接到 -mt 变体?该项目使用 GNU Make 进行构建。
总是链接到 -mt 变体是否有性能或功能损失?