缺少来自未知路径的 boost 文件

Posted

技术标签:

【中文标题】缺少来自未知路径的 boost 文件【英文标题】:Missing boost files from an unknown path 【发布时间】:2019-07-03 23:20:46 【问题描述】:

我收到关于缺少 boost 文件的错误,但据我所知,我已经通过 YAST (OpenSUSE) 安装了它们。但是,我仍然收到错误。我需要帮助解决这个问题。

当从 YAST 包安装不起作用时,我从源代码安装了 boost。它仍然没有工作。我安装了 boost-1.70.0

/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_date_time
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_filesystem
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_system
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_regex
collect2: error: ld returned 1 exit status
make: *** [/home/hafiz/OpenFOAM/OpenFOAM-6/wmake/makefiles/general:142: /home/hafiz/OpenFOAM/hafiz-6/platforms/linux64GccDPInt64Opt/bin/laminarBuoyantSimpleSMOKE] Error 1

我希望通过源代码安装 boost,这个错误会得到解决,但它仍然存在。 boost 编译成功,如此处所述:

...updated 184 targets...


The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    /home/hafiz/Softwares/boost/boost_1_70_0

The following directory should be added to linker library paths:

    /home/hafiz/Softwares/boost/boost_1_70_0/stage/lib

我不确定编译器包含路径和链接器库路径是否会自动添加。请帮助解决这个问题!谢谢

【问题讨论】:

如您的 boost 安装输出中所述,您需要告诉编译器在哪里可以找到 boost 包含和库目录。 @AlexHodges 我该如何设置路径? @hphys 这取决于您的编译器。你用的是哪一个? @Chipster 我正在使用 GNU 编译器 当这些消息说“应该添加”时,意思是应该添加。 (该消息并不意味着“发生了表明添加已完成的事情”——在这种情况下,该工具会检查并报告成功或失败,而不是胡思乱想。) 【参考方案1】:

您似乎正在使用 OpenFOAM 和 OpenSMOKE++,因此您遗漏了很多重要信息来实际回答这个问题(例如,OpenFOAM 使用 wmake 而不是明确地制作!)。尽管如此,我将假设您 (1) 已经安装了 OpenFOAM,(2) 正在编译 OpenSMOKE++ 应用程序/求解器,以及 (3) 您唯一的问题是 wmake 找不到您已安装的 boost。

您需要将 boost 路径添加到您的 (solver)/Make/files EXE_LIBS 部分,以便 wmake 找到 boost:

EXE_LIBS = \
-L$(FOAM_USER_LIBBIN) \
-lfiniteVolume \
-lmeshTools \
-lsampling \
-lfvOptions \
-L$(BOOST_LIB_DIR) 

其中 BOOST_LIB_DIR 是设置为 /home/hafiz/Softwares/boost/boost_1_70_0/stage/lib 的环境变量

有关更多信息,请参阅 OpenFOAM 用户指南第 3.2 节:编译应用程序和库https://cfd.direct/openfoam/user-guide/v6-compiling-applications/#x10-710003.2

此外,*** 并不是 OpenFOAM 的最佳场所——cfd-online.com 有一个 CFD/OpenFOAM 特定论坛更适合此类问题。

【讨论】:

以上是关于缺少来自未知路径的 boost 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript 获取未知文件路径 - 扩展路径?

将文件路径字符串传递给 Boost.Spirit 中的语义操作

Boost.PropertyTree 子路径处理

将 Boost 库包含到标准 MinGW 路径中

boost::property_tree::json_parser::read_json 如果路径包含西里尔字符则无法读取文件

如何在不知道安装路径的情况下卸载boost