【问题标题】:How to compile and link boost libraries within Eclipse on Oracle Linux如何在 Oracle Linux 上的 Eclipse 中编译和链接 boost 库
【发布时间】:2019-09-29 19:43:21
【问题描述】:

无法弄清楚如何编译和链接仅包含一些 boost 库的简单 boost 程序。

代码如下

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

版主注意:有很多关于 SO 的帖子都提出了类似的问题。但是,我没有找到完全解决我的问题的解决方案(我缺少的关键见解是我需要安装 boost-devel)。因此,我创建了这个问答。

【问题讨论】:

    标签: c++ boost linker g++


    【解决方案1】:

    以下是编译程序所需的步骤

    1. 安装boostboost-devel

      sudo yum install boost # 安装链接库 sudo yum install boost-devel # 安装头文件供你编译

    2. 您试图让 Eclipse 生成的命令如下:

      g++ net-server.cpp -I /usr/include -L/usr/lib64/ -lboost_system

    -L/usr/lib64 实际上是不必要的,但我将它包含给读者,因为它让读者更容易理解 -l 包含和默认包含在 Oracle Linux 中的 -L/usr/lib64 之间的关系(可能是 RHEL也)。

    -I /usr/include 也是不必要的,但包含它是为了让读者清楚 boost/array.hpp 等文件在编译阶段来自哪里。

    1. 让 Eclipse 生成该命令

      • 转到项目 > 属性
      • 选择您要配置的构建(您可能希望为“调试”和“发布”构建都这样做,但也许您只有一个)
      • 转到“Cross G++ 链接器”> 库。
      • 在“库”部分,单击 + 图标并添加 boost_system 库。

    请注意,我选择了“cross gcc 编译”选项而不是 Linux 交叉编译选项。这实际上来自 Nvidia 的 Eclipse 版本(与 CUDA 一起作为“Eclipse Nsight”分发),因此非 Nvidia 版本的 Eclipse 的说明可能会有所不同。

    【讨论】:

    • 您可能还需要 pthread 库并启用 c++11 支持。
    • 另外,当你使用更多的 boost 库时,你也需要链接它们。例如,添加boost_thread
    猜你喜欢
    • 2012-03-23
    • 2010-11-27
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多