1

大家好,我一整天都在用头撞墙。

所以我想把我的程序移到大学超级计算机上,但它没有 boost(我在代码中使用了 boost program_options)。在我的电脑上,我只有 -lboost_program_options 并且工作正常,但显然不再工作了。

因此,我需要将必要的东西与我的代码一起打包,以便在超级计算机上编译(使用英特尔 icpc)

我的第一个障碍是编译我的 makefile 中包含要包含 boost 标头的代码的行,但我在我的代码文件夹中运行了以下内容:

bcp --scan --boost=/usr/include/ main.cpp destination_folder/

并将生成的文件放在我的包含目录中。解决了这个问题。

不幸的是,Boost 程序选项不仅仅是一个标题包,所以我需要别的东西。我需要去图书馆什么的。因为当编译器到达我的makefile上的最后一个任务时我得到错误(执行所有目标文件)

在我的旅行中,我发现了这个问题:

提取/构建提升程序_选项

我尝试了答案的建议,但是在我的命令中添加“build”不会生成任何额外的文件......

现在完全卡住了,不知道如何获得这个图书馆的东西。我在 bjam 上读了这么多东西,我的脑袋都在旋转,我只是没有足够的理解能力来处理这一切。

操作系统:Linux 两个系统

4

3 回答 3

2

一种选择是在那台机器上构建提升。将其安装在您的家中。更改您的 CXXFLAGS 和 LDDFLAGS 以指向正确的头文件和库目录并在那里构建您的代码。另一种选择是在您的 PC 上交叉编译(如果您有这样的交叉工具链)。静态链接您的代码以提升并将最终的二进制文件传输到超级计算机。

于 2011-09-26T20:47:35.977 回答
1

由于两个系统都是 linux,因此您只想使用二进制文件。如果两个系统都在同一个 CPU 上运行,只需静态编译您的程序。如果没有,请下载适用于您的超级计算机运行的架构的 debian 软件包,并从中提取头文件和二进制文件。

我已经从 bjam 构建了 boost 用于交叉编译到 windows,如果有理由在项目中使用 autotools,那就是 boost 和 bjam 的混乱。如果可能,请避免使用它,如果不能,请尝试调整 debian 包源。

于 2011-09-26T20:45:05.387 回答
1

Boost.ProgramOptions您可以在项目中包含并编译其所有 .cpp 文件,而不是构建。

于 2011-09-26T20:50:48.723 回答