C++ 使用终端链接boost::asio

C++ 使用终端链接boost::asio,c++,boost-asio,archlinux,C++,Boost Asio,Archlinux,我正在尝试使用终端链接boost::asio(我也在使用文本编辑器) 我试过的 我在互联网上做了一些研究(我没有发现关于我的发行版的任何信息)-我发现我必须通过在终端上执行以下命令来安装该库: sudo pacman -S libboost-all-dev 这是我得到的输出: 错误:未找到以下包:libboost all dev 最后问题 如何安装并正确链接boost::asio与.cpp文件 注意事项: 我正在使用Archlinux 无法在*.cpp文件内链接库。您应该使用g++命令行中

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

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

sudo pacman -S libboost-all-dev
这是我得到的输出:

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

最后问题 如何安装并正确链接
boost::asio
.cpp
文件

注意事项:

  • 我正在使用Archlinux

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

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

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

sudo pacman -Ss boost
这将列出带有字符串
boost
的包。或者,您可以在套餐网站上查找:

关于boost,您应该了解的一件事是,它的大多数模块都只是头模块;如果链接器抱怨未定义的引用,则必须链接所需的文件。要链接boost asio,您可以这样做

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

如何将某些内容链接到文本编辑器?!也许你的意思是“命令行”或什么?@ForceBru正确。我编辑了我的问题我知道这不是直接的问题,但我建议你们使用CMake作为项目经理来处理Boost。使用CMake,您甚至可以为编译器提供选项,以使用支持多线程的Boost,或者静态/动态地将您的目标与之链接。检查这篇SO帖子:@orlow65
-lboost\u system
应该足够了。此外,如果您使用线程来很好地缩放asio,那么您还需要
-lboost\u thread
@GreenScape您能告诉我准确的名称吗?如果我添加
-boost\u system
作为参数,我会得到错误…我得到:
/usr/bin/ld:找不到-lboost asio\n collect2:错误:ld返回了1个退出状态
-但我刚刚安装了它们,我检查了我自己的系统是否有boost asio;没有必要把它联系起来。但是链接
增压系统
是个好主意。在这种情况下,boost asio是一个仅限报头的模块。如果我不链接boost系统,我会出错!但是当我尝试使用-lboost系统参数进行编译时,我得到了如下结果:
无法找到boost系统
!:(非常感谢您的帮助!我解决了我的问题!您能分享一下您发现如何使用-lboost系统吗?它似乎不在boost文档中,g++手册页也不包含它。而且我的系统似乎根本无法识别-lboost系统!我得到:
/usr/bin/ld:找不到-lboost asio\n collect2:错误:ld returned 1退出状态
-但我刚刚安装了它们。我记得boost asio是唯一较难的库。链接只是boost-system。非常感谢您的帮助!我解决了我的问题!