【问题标题】:Installing graph-tool on Mac OS X (10.7) - already have Boost installed, but keep getting this error在 Mac OS X (10.7) 上安装图形工具 - 已经安装了 Boost,但不断收到此错误
【发布时间】:2014-03-14 14:45:56
【问题描述】:

我已经被这个问题困扰了一段时间了。我正在尝试安装图形工具 - http://graph-tool.skewed.de/download#macos - 我有遵循这些步骤的先决条件,图形工具站点链接到:https://gist.github.com/openp2pdesign/8864593

而不是似乎没有给我所有文件的 brew install ,我去了 Boost 的官方网站并按照以下步骤从那里正确下载:http://www.boost.org/doc/libs/1_41_0/more/getting_started/unix-variants.html 它主要是获取一个 tar 文件并解压缩它。

然后我将我的 boost 安装放在这里:

/usr/local/boost_1_55_0

我做了一个小的 C++ 示例并确认 Boost 工作正常(使用来自 http://www.boost.org/doc/libs/1_41_0/more/getting_started/unix-variants.html 的“使用 Boost 构建简单程序”。

现在问题的核心:尝试安装图形工具。在最后一步,我这样做了

./configure PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin"

(PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin" 只是让配置脚本可以找到 Python。)

但是我得到了这个错误。 (它发现 Python 很好,但不是提升!)

...
================
Detecting python
================
checking for a Python interpreter with version >= 2.6... python
checking for python... /Users/daze/Library/Enthought/Canopy_64bit/User/bin/python
checking for python version... 2.7
checking for python platform... darwin
checking for python script directory... ${prefix}/lib/python2.7/site-packages
checking for python extension module directory... ${exec_prefix}/lib/python2.7/site-packages
checking for python2.7... (cached) /Users/daze/Library/Enthought/Canopy_64bit/User/bin/python
checking for a version of Python >= '2.1.0'... yes
checking for a version of Python == '2.7.3'... yes
checking for the distutils Python package... yes
checking for Python include path... -I/Applications/Canopy.app/appdata/canopy-1.1.0.1371.macosx-x86_64/Canopy.app/Contents/include/python2.7
checking for Python library path... -L/Applications/Canopy.app/appdata/canopy-1.1.0.1371.macosx-x86_64/Canopy.app/Contents/lib/python2.7/config -lpython2.7
checking for Python site-packages path... /Users/daze/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages
checking python extra libraries...  -ldl  -framework CoreFoundation
checking python extra linking flags... -L/usr/local/bin
checking consistency of all components of python development environment... yes
graph-tool will be installed at: /Users/daze/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages
===========================
Using python version: 2.7.3
===========================
    checking for boostlib >= 1.38.0... configure: error: We could not detect the boost 
libraries (version 1.38 or higher). If you have a staged boost library (still not installed) 
please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  
If you are sure you have boost installed, then check your version number looking in 
<boost/version.hpp>. See http://randspringer.de/boost for more documentation.

尝试 2:然后我尝试正确设置 BOOST_ROOT:

在我的 ~/.bash_profile 中:

export BOOST_ROOT="/usr/local/boost_1_55_0"

但还是没用,所以我取消了。

尝试 3:然后我尝试明确指定 boost 的安装位置:

./configure --with-boost="/usr/local/boost_1_55_0" PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin"

但它仍然找不到 boost,并在“我们无法检测到 boost 库(1.38 版或更高版本)”末尾产生同样的错误

整天都在烦我。我已经仔细阅读,并访问了 randspringer.de/boost 网站并在常见问题解答中看到了这一点 - http://www.randspringer.de/boost/faq.html#id2514912

问:我不明白配置错误信息

在配置时我得到:

检查 boostlib >= 1.33... 配置:错误:我们无法检测到 boost 库(1.33 或更高版本)。如果你有一个分阶段 boost 库(仍未安装)请在您的 环境,并且不要为 --with-boost 选项提供 PATH 。如果你是 确保您已安装 boost,然后检查您的版本号 在 。请参阅http://randspringer.de/boost 了解更多信息 文档。

我不知道我是否使用了分阶段的 boost。它是什么,什么 我可以吗?

A:如果你没有自己编译 Boost,你就没有 staged 版本,您不必设置 BOOST_ROOT。在这里寻找一个 不同类型的安装说明。

如果您确定已安装 Boost,请指定目录 与

./configure --with-boost=your-boost-directory.

如果还是不行,请检查版本号 boost/version.hpp 并将其与请求的版本进行比较 配置.ac。

而且我不知道在比较版本号时会看到什么。那里没有我觉得有趣的东西。

希望有人对采取其他方法至少有一个想法

【问题讨论】:

    标签: python c++ macos boost installation


    【解决方案1】:

    万岁,我第一次有机会回馈 Stack Overflow!过去 2 天我自己一直在处理这个问题。

    解决方案

    1. 通过 Xcode 升级 clang

    2. 创建一个包含版本号的符号链接来提升

      /usr/local/include/boost-1_55.0 -> ../Cellar/boost/1.55​​.0/include/boost

    (包括在内,因为我使用 Brew 安装了 Boost 并遇到了这个问题)

    1. 在 configure 中编辑 CXXFLAGS 的生成,使其看起来像这样:

      old_cxxflags="$CXXFLAGS"
      CXXFLAGS="${CXXFLAGS} -std=gnu++11 -stdlib=libc++"
      { $as_echo "$as_me:${as_lineno-$LINENO}: 检查 C++ 编译器是否支持 -std=gnu++11" >&5
      $as_echo_n "检查C++编译器是否支持-std=gnu++11..." >&6; }

    2. 运行

      ./configure --disable-sparsehash CXX="/usr/bin/clang++" PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin"

    版本

    操作系统:Mac OS X 10.8.5
    Clang:Apple LLVM 5.0 版 (clang-500.2.79)(基于 LLVM 3.3svn)
    目标:x86_64-apple-darwin12.5.0
    线程模型:posix
    图表工具:2.2.29.1
    提升:1.55.0

    说明

    1. 如果您查看配置代码并尝试编译配置中生成的 confdefs.h 文件,您会在遇到 -Wno-unused-local-typedefs 标志时看到 clang 错误。这是“我们无法检测到 boost 库(版本 1.33 或更高版本)”错误的实际原因,而不是它找不到 boost 文件的事实。此问题已通过较新版本的 clang 得到修复。

    2. 版本号的配置测试很愚蠢。它希望 boost 包含目录包含版本号。

    3. 运行make时,可能会遇到如下错误:

      ./../graph_adjacency.hh:26:10:致命错误:找不到“元组”文件

    这是由于引用了错误的标准库[1]

    ./../graph_adaptor.hh:655:39: error: expected ';' in 'for' statement specifier  
        for(typeof(removed_edges.begin()) iter = removed_edges.begin();  
    ./../graph_adaptor.hh:655:39: error: use of undeclared identifier 'tier'  
    

    这是因为引用了错误的 C++ 标准(c++11 而不是 gnu++11)

    参考文献

    [1]No member named 'forward' in namespace 'std'
    [2]I'm having some trouble with C++11 in Xcode

    【讨论】:

    • 嗯,我不知道如何更新 clang。我只是坚持使用我的版本,即 Apple LLVM 版本 4.2 (clang-425.0.28)。无论如何,感谢您的回答 - 我对这个发现印象深刻。但是现在我得到一个不同的错误:“配置:错误:不满足包要求(cairomm-1.0):包'cairo','cairomm-1.0'所需,未找到如果您安装软件,请考虑调整PKG_CONFIG_PATH环境变量一个非标准前缀。”奇怪的是我通过自制软件安装了 cairo 和 cairomm。
    • 你在关注这个吗? gist.github.com/openp2pdesign/8864593 我想我曾经看到过这个问题,但这是一个简单的修复,涉及该页面上的说明。至于更新 clang,你需要做的就是打开 Xcode -> Preferences -> Downloads -> check Command Line Tools
    • 我遵循了那个要点。 brew install cairo 和 brew install cairomm 已经完成了......不知道还能做什么。
    • 你安装了 pkgconfig 吗?
    • 是的,你需要运行export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig 然后./configure PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin"
    【解决方案2】:

    我认为您当前将 --with-boost 指向 boost 父目录,而不是 boost 库。 试试

    ./configure --with-boost="/usr/local/boost_1_55_0/libs/"  PYTHON_EXTRA_LDFLAGS="-L/usr/local/bin"
    

    【讨论】:

    • 感谢您的回答;然而,这不是它。根据boost.org/doc/libs/1_55_0/more/getting_started/…,/usr/local/boost_1_55_0/ 是根目录。无论如何我尝试了该命令 - 它得到相同的“我们无法检测到......”错误:/
    • 抱歉 :( 与 python 交谈绝对是一件痛苦的事。希望其他人尽快为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多