【问题标题】:Difficulty linking Boost 1.60 on OS X after installing via Homebrew通过 Homebrew 安装后,在 OS X 上很难链接 Boost 1.60
【发布时间】:2016-08-26 13:01:12
【问题描述】:

我有一个全新安装的 OS X 10.11.4,我立即安装了 Xcode 工具链,然后是 Homebrew,然后是 Boost 1.60。为了测试一切顺利,我在桌面上编写了以下代码。

#include <iostream>

#include <boost/filesystem.hpp>

int main() {
    boost::filesystem::path new_directory("hello");
    boost::filesystem::create_directory(new_directory);
}

然后我尝试编译它,就像我通常使用以下命令所做的那样。

$ clang++ test.cpp -o test -lboost_system -lboost_filesystem

我收到以下错误。

test.cpp:3:10: fatal error: 'boost/filesystem.hpp' file not found
#include <boost/filesystem.hpp>

这就是我过去一直编译链接 Boost 的项目的方式。我假设我可能忘记了允许 clang 搜索特定路径以动态链接库的步骤。为了使这个编译命令起作用,我应该改变什么?

【问题讨论】:

  • 检查系统包含路径在xcode项目中包含路径/usr/local/include
  • 是的,我知道我之前回答过这个问题:stackoverflow.com/questions/27470462/…
  • 我没有使用 Xcode(而且我几乎从不使用);我正在从终端编译单个文件。如果我在 Xcode 中执行此操作,它会永久更改每个 clang 编译的设置吗?
  • 啊,那你需要添加选项 -I/include -L /path/to/boost/libs
  • 但是我应该怎么做才能让 -this- 编译命令正常工作?我知道这是可能的,这是我过去一直设置的方式。我只是忘记了如何。

标签: c++ macos boost clang homebrew


【解决方案1】:

对我来说,boost 已编译并安装到我的主目录的子目录中,因此您需要根据您的 homebrew 安装修改路径:

flags="-std=c++1z -I/${HOME}/local/include -L${HOME}/local/lib -lboost_filesystem -lboost_system"
c++ ${flags} -o jared jared.cpp

【讨论】:

    【解决方案2】:

    首先通过执行以下操作获取 boost 的位置:

    brew info boost

    从上图可以看出我的位置是

    /usr/local/Cellar/boost/1.66.0

    然后,要编译,请使用以下代码:

    c++ -I /usr/local/Cellar/boost/1.66.0 main.cpp -o boost

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多