通过 MacPorts 在 MacOS 上使用 boost

问题描述 投票:0回答:1

我正在尝试在 MacOS 上构建一些使用 boost(特别是 boost_system)的软件。一切似乎都配置和构建正常,但是当它链接时它给出了错误:

ld: library 'boost_system' not found

查看 MacPorts 安装的 boost 库,它们似乎都有一个

-mt
后缀——我发现
/opt/local/lib/libboost_system-mt.dylib
。如果我将 Makefile.am 文件更改为使用
-lboost_system-mt
,那么一切都会正常,但当然这非常痛苦,并且会破坏任何其他构建。

有人知道这是怎么回事吗?这个

-mt
后缀从何而来?这是 MacPorts 的问题还是其他问题?

boost macports automake
1个回答
0
投票

Boost 库文件名中的

-mt
后缀代表“多线程”(如本线程所示)。某些包管理器(包括 MacPorts)使用该命名约定来区分 Boost 库的单线程和多线程版本。 第一个选项:您可以将正确的库名称传递给构建配置脚本,而不是直接编辑 Makefile.am

。这通常是通过

LDFLAGS

LIBS
 等标志完成的。
LDFLAGS="-lboost_system-mt" ./configure

或者:创建从
libboost_system.dylib

libboost_system-mt.dylib

 的符号链接。这样,您的软件就可以在实际使用多线程变体时链接到 
libboost_system
ln -s /opt/local/lib/libboost_system-mt.dylib /opt/local/lib/libboost_system.dylib


© www.soinside.com 2019 - 2024. All rights reserved.