Makefile:500:目标 'graph_cairo_draw.lo' 的配方失败

Makefile:500: recipe for target 'graph_cairo_draw.lo' failed

我正在尝试编译当前的 git (2.19dev) 版本的图形工具。据我所知,正在使用 gcc 5.4。我是 运行宁 Ubuntu 16.04。我有 运行:

git clone gitlab@git.skewed.de:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh
sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp
sudo make -Wno-unused-local-typedefs

注释 Makefile:500: recipe for target 'graph_cairo_draw.lo' failed 似乎失败了。

所以我想我会再试一次(删除所有文件后)并在 运行 配置后检查 config.log 的输出。所以我 运行:

git clone gitlab@git.skewed.de:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh

返回:

libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:22: installing './compile'
configure.ac:18: installing './config.guess'
configure.ac:18: installing './config.sub'
configure.ac:20: installing './install-sh'
configure.ac:20: installing './missing'
src/graph/Makefile.am: installing './depcomp'
src/graph_tool/Makefile.am:3: installing './py-compile'

然后我 运行 sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp 然后是 sudo chmod o+rw config.log 因为我无法打开 config.logconfigure 没有在屏幕上显示任何错误消息,但 config.log 似乎显示了一些错误。其中一些是:

configure:3811: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.

configure:3811: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.

configure:4588: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.

很遗憾,我不知道我在寻找什么,也不知道这些错误消息是什么意思。有人能帮我吗?这是来自此处的交叉 post,其中附有原始 config.loghttp://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/Errors-installing-2-19dev-td4026942.html

编辑: 按照评论中的建议,问题似乎出在 make 而不是 configure。我 运行 的 make 命令是

make -Wno-unused-local-typedefs

这返回了以下屏幕错误输出:

make  all-recursive
make[1]: Entering directory '/home/pmj27/graph-tool'
Making all in src
make[2]: Entering directory '/home/pmj27/graph-tool/src'
Making all in graph
make[3]: Entering directory '/home/pmj27/graph-tool/src/graph'
Making all in centrality
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/centrality'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/centrality'
Making all in clustering
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/clustering'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/clustering'
Making all in correlations
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/correlations'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/correlations'
Making all in draw
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/draw'
  CXX      graph_cairo_draw.lo
In file included from ./../graph.hh:28:0,
                 from graph_cairo_draw.cc:18:
./../graph_adjacency.hh:223:59: error: ‘distance_to’ function uses ‘auto’ type specifier without trailing return type
         auto distance_to(base_edge_iterator const& other) const
                                                           ^
./../graph_adjacency.hh:223:59: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:367:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:367:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:369:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:369:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:372:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                               ^
./../graph_adjacency.hh:372:62: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                                              ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:373:48: error: request for member ‘idx’ in ‘a’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                ^
./../graph_adjacency.hh:373:56: error: request for member ‘idx’ in ‘b’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                        ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:380:44: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](auto idx) -> bool
                                            ^
./../graph_adjacency.hh: In function ‘std::pair<typename boost::adj_list<Vertex>::edge_descriptor, bool> boost::edge(Vertex, Vertex, const boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:601:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              [&](const auto& e) -> bool {return e.first == t;});
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:601:67: error: request for member ‘first’ in ‘e’, which is of non-class type ‘const int’
                              [&](const auto& e) -> bool {return e.first == t;});
                                                                   ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:711:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:711:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:712:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                               ^
./../graph_adjacency.hh:712:51: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                                                   ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:717:43: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                     if (!pred(mk_out_edge.def(v, oe)))
                                           ^
./../graph_adjacency.hh:723:50: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](const auto& ei) -> bool
                                                  ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:725:65: error: request for member ‘def’ in ‘mk_in_edge’, which is of non-class type ‘int’
                                            if (!pred(mk_in_edge.def(t, ei)))
                                                                 ^
./../graph_adjacency.hh:727:51: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                            if (ei.first == v)
                                                   ^
./../graph_adjacency.hh:729:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                                g._free_indexes.push_back(ei.second);
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:739:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&](auto& oe)
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:741:64: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                        return pred(mk_out_edge.def(v, oe));
                                                                ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:755:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:755:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:756:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                               ^
./../graph_adjacency.hh:756:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:761:39: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                 if (!pred(mk_out_edge.def(v, ei)))
                                       ^
./../graph_adjacency.hh:768:40: error: expression cannot be used as a function
                 auto& pos = get_pos(idx);
                                        ^
./../graph_adjacency.hh:779:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                [&](auto& oe)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:781:60: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                    return pred(mk_out_edge.def(v, oe));
                                                            ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:787:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].second;},
                                          ^
./../graph_adjacency.hh:790:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].first;},
                                          ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:798:27: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     clear_vertex(v, g, [](auto&&){ return true; });
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:810:25: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     auto shift_es = [&](auto& edges, int i)
                         ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:812:31: error: invalid types ‘int[int]’ for array subscript
         for (auto& e : edges[i])
                               ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:842:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                              ^
./../graph_adjacency.hh:842:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                                               ^
./../graph_adjacency.hh:843:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              const auto& get_pos)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:865:51: error: expression cannot be used as a function
                             auto pos = get_pos(idx);
                                                   ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:873:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].second;});
                                     ^
./../graph_adjacency.hh:875:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].first;});
                                     ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:926:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:927:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return t == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:937:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:938:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return s == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:963:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                              ^
./../graph_adjacency.hh:963:43: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                                           ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:965:48: error: request for member ‘begin’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                ^
./../graph_adjacency.hh:965:63: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                               ^
./../graph_adjacency.hh:966:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                          [&] (const auto& ei) -> bool
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:967:58: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                          ^
./../graph_adjacency.hh:967:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:968:35: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 if (iter != elist.end())
                                   ^
./../graph_adjacency.hh:970:27: error: request for member ‘erase’ in ‘elist’, which is of non-class type ‘int’
                     elist.erase(iter);
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:982:34: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                  ^
./../graph_adjacency.hh:982:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:984:42: error: request for member ‘back’ in ‘elist’, which is of non-class type ‘int’
                 const auto& back = elist.back();
                                          ^
./../graph_adjacency.hh:986:36: error: expression cannot be used as a function
                 get_pos(back.second) = pindex;
                                    ^
./../graph_adjacency.hh:988:23: error: request for member ‘pop_back’ in ‘elist’, which is of non-class type ‘int’
                 elist.pop_back();
                       ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:991:50: error: invalid use of ‘auto’
             remove_e(oes, [&](size_t idx) -> auto& {return g._epos[idx].first;});
                                                  ^
./../graph_adjacency.hh:992:50: error: invalid use of ‘auto’
             remove_e(ies, [&](size_t idx) -> auto& {return g._epos[idx].second;});
                                                  ^
In file included from ./../graph_filtering.hh:49:0,
                 from graph_cairo_draw.cc:22:
./../graph_selectors.hh: At global scope:
./../graph_selectors.hh:78:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:78:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:86:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:86:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:98:44: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        detail::no_weightS) const
                                            ^
./../graph_selectors.hh:98:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:106:71: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const ConstantPropertyMap<Value, Key>& weight) const
                                                                       ^
./../graph_selectors.hh:106:71: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:114:61: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const UnityPropertyMap<Value, Key>&) const
                                                             ^
./../graph_selectors.hh:114:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:121:72: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph& g, std::true_type, Weight& weight) const
                                                                        ^
./../graph_selectors.hh:121:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:134:66: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph&, std::false_type, Weight&&)  const
                                                                  ^
./../graph_selectors.hh:134:66: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:149:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:149:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:157:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:157:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:165:72: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const ConstantPropertyMap<Value, Key>& weight) const
                                                                        ^
./../graph_selectors.hh:165:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:173:62: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const UnityPropertyMap<Value, Key>&) const
                                                              ^
./../graph_selectors.hh:173:62: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:181:63: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, const Weight& weight) const
                                                               ^
./../graph_selectors.hh:181:63: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:194:61: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, detail::no_weightS) const
                                                             ^
./../graph_selectors.hh:194:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:208:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:208:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:216:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:216:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:229:44: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           Weight&& weight) const
                                            ^
./../graph_selectors.hh:229:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:238:77: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           const Graph& g, std::false_type, Weight&& weight) const
                                                                             ^
./../graph_selectors.hh:238:77: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:255:56: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
     auto operator()(const Descriptor& d, const Graph&) const
                                                        ^
./../graph_selectors.hh:255:56: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:673:44: error: ‘mk_range’ function uses ‘auto’ type specifier without trailing return type
 auto mk_range(std::pair<Iter, Iter>&& range)
                                            ^
./../graph_selectors.hh:673:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:680:35: error: ‘vertices_range’ function uses ‘auto’ type specifier without trailing return type
 auto vertices_range(const Graph& g)
                                   ^
./../graph_selectors.hh:680:35: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:687:32: error: ‘edges_range’ function uses ‘auto’ type specifier without trailing return type
 auto edges_range(const Graph& g)
                                ^
./../graph_selectors.hh:687:32: note: deduced return type only available with -std=c++14 or -std=gnu++14

还有更多行错误,但 post 全部都超出了字符数限制。

编译失败的 C++ 源代码使用了来自 C++14 标准,所以它需要编译器选项 -std=c++14, 这不是通过您的 ./configure 命令提供的。

这是程序包自动工具中的一个错误(它会生成 configure 脚本)。作为包用户,您不需要指定适用的 成功构建的 C++ 语言标准:应该是 pre-configured.

您可能会看到此错误,因为您使用的是 master 分支负责人 回购,而不是稳定的软件包发布,但它仍然是一种质量 如果 master 分支负责人没有使用默认 ./configure 构建,那就失态了 - 但事实并非如此:我确认您的构建中断。

您可以控制 ./configure 将生成的 C++ 编译选项 通过在其命令行中将所需的选项分配给 CXXFLAGS 。 (运行 ./configure -h 了解更详细的信息。)

./configure CXXFLAGS=-std=c++14
make
sudo make install

将给你一个成功的构建和安装,假设你已经满足所有 依赖项。

顺便说一下你发布的 make 命令,

sudo make -Wno-unused-local-typedefs

没有意义,尽管这与构建中断无关。你是 试图将 编译器 选项 -Wno-unused-local-typedefs 传递给 make,这不是编译器,只是忽略它。如果你想通过这个 编译器的附加选项,然后将其添加到您传递给的 CXXFLAGS ./configure:

./configure CXXFLAGS='-std=c++14 -Wno-unused-local-typedefs'

它会抑制构建中的一些小警告,但这是不必要的。