如何在 Oracle Linux 上的 Eclipse 中编译和链接 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(。 因此,我创建了这个问答。

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

  1. 安装boostboost-devel

    须藤百胜安装提升 # 安装用于链接的库 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(可能也是RHEL(中默认包含的-L/usr/lib64之间的关系。

-I /usr/include也是不必要的,但包含它是为了向读者清楚地表明编译阶段boost/array.hpp等文件来自何处。

  1. 让 Eclipse 生成该命令

    • 转到项目>属性
    • 选择要配置的版本(您可能希望为"调试"和"发布"版本执行此操作,但也许您只有一个(
    • 转到"Cross G++ Linker">库。
    • 在"库"部分中,单击+图标并添加boost_system库。

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

最新更新