【问题标题】:Linking boost::asio using terminal使用终端链接 boost::asio
【发布时间】:2016-04-02 08:11:30
【问题描述】:

我正在尝试使用终端链接boost::asio(我也在使用文本编辑器)。

我尝试了什么

我在 Internet 上做了一些研究(我没有发现任何关于我的发行版的信息) - 我发现我必须通过在终端上执行以下命令来安装该库:

sudo pacman -S libboost-all-dev

这是我得到的输出:

错误:未找到以下包:libboost-all-dev

最后一个问题

如何安装boost::asio 并正确链接到我的.cpp 文件?

注意事项:

  • 我正在使用 Archlinux

【问题讨论】:

  • 你怎么能用你的文本编辑器链接一些东西?!也许您的意思是“命令行”或什么?
  • @ForceBru 正确。我编辑了我的问题
  • 我知道这不是直接的问题,但我建议您使用 CMake 作为项目经理并使用它来处理 Boost。使用 CMake,您甚至可以提供编译器选项以使用具有多线程支持的 Boost 或静态/动态地链接您的目标。检查此 SO 帖子:stackoverflow.com/a/3917033/2369389
  • @orlow65 -lboost_system 应该足够了。此外,如果您使用线程很好地扩展asio,那么您还需要-lboost_thread
  • @GreenScape 你能告诉我准确的名字吗?如果我添加-boost_system 作为参数,我会得到错误...

标签: c++ boost-asio archlinux


【解决方案1】:

要在 Arch Linux 中查找软件包,请执行以下操作:

sudo pacman -Ss boost

这将列出带有字符串boost 的包。或者,您可以在包的网站上查找:https://www.archlinux.org/packages/extra/x86_64/boost/

关于 boost,您应该了解的一点是,它的大部分模块都是仅包含标头的;如果链接器抱怨未定义的引用,那么您将不得不链接所需的文件。要链接 boost-asio,你会这样做

g++ -lboost-system <source> <exe>

【讨论】:

  • 我得到:/usr/bin/ld: unable to find -lboost-asio \n collect2: error: ld returned 1 exit status - 但我刚刚安装了它们
  • 我检查了我自己的系统是否有 boost-asio;没有必要链接它。但链接boost-system 是个好主意。在这种情况下,boost-asio 是一个只有头文件的模块。
  • 如果我不链接 boost-system 我会出错!但是当我尝试使用 -lboost-system 参数进行编译时,我得到类似:unable to find boost-system! :(
  • 非常感谢您的帮助!我解决了我的问题!
  • 您能分享一下您是如何发现使用-lboost-system 的吗?它似乎不在 boost 文档中,g++ 手册页也不包含它。而且我的系统似乎根本无法识别 -lboost-system!
【解决方案2】:

How to install boost in Arch Linux

您不能在 *.cpp 文件中链接库。您应该在 g++ 命令行中使用 -l 选项枚举所需的库。

g++ -lboos-asio -lboost-system myfile.cpp -o myapp

【讨论】:

  • 我得到:/usr/bin/ld: unable to find -lboost-asio \n collect2: error: ld returned 1 exit status - 但我刚刚安装了它们
  • 我记得 boost-asio 是更难的库。链接只是提升系统。
  • 非常感谢您的帮助!我解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2012-05-04
  • 2016-10-03
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多