Makefile:500: рецепт для цели 'graph_cairo_draw.lo' не удался

Я пытаюсь скомпилировать текущую версию графического инструмента git (2.19dev). Насколько я могу судить, используется gcc 5.4. Я использую Ubuntu 16.04. Я запустил:

git clone [email protected]: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 после запуска configure. Итак, я побежал:

git clone [email protected]: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.log. configure не выводит на экран никаких сообщений об ошибках, но 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.

К сожалению, я не знаю, что именно я ищу или что означают эти сообщения об ошибках. Кто-нибудь может мне помочь с этим? Это кросс-пост отсюда, к которому прикреплены оригинальные config.log: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/Errors-install-2-19dev-td4026942.html

EDIT: Следуя советам в комментариях, проблема, похоже, связана с 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

Есть еще много строк с ошибками, но публикация всего этого требует от меня ограничения по количеству символов.


person P-M    schedule 13.01.2017    source источник
comment
Ваша команда ./configure не привела к ошибкам, поскольку ошибок configure не было. Сообщения об ошибках, которые вы видите в config.log, являются ожидаемыми результатами проверок среды, запущенных configure. Чистый configure не исключает ошибок сборки. Вам нужно будет опубликовать фактический журнал сборки неудачной сборки с шагами, с помощью которых читатели могут ее воспроизвести. (git clone [email protected]:count0/graph-tool.git спрашивает пароль...)   -  person Mike Kinghan    schedule 13.01.2017
comment
Запрос пароля исчезнет, ​​если вы добавите свой ключ ssh в свою учетную запись gitlab. Я предполагаю, что если вы загрузите его через html, он также должен исчезнуть? то есть команда должна быть git clone https://git.skewed.de/count0/graph-tool.git Какой именно файл вам нужен? config.log после запуска make? config.log после .\configure можно найти по размещенной ссылке, так как я не знал, как опубликовать его в stackoverflow, и я не хотел заполнять экран сотнями строк текста.   -  person P-M    schedule 13.01.2017
comment
Я также загрузил вывод экрана шага make, который, похоже, идет не так по ссылке выше.   -  person P-M    schedule 13.01.2017
comment
Как я уже сказал, ./configure был успешным, и тот факт, что он был успешным, не исключает make ошибок. make не удалось. Запишите вывод make: make [options...?] > build.log.txt 2>&1 Найдите первую командную строку в журнале сборки, которая выдает ошибки. Опубликуйте команду make, первую ошибочную командную строку и вытекающие из нее ошибки, дословно, в теле вашего вопроса. Размещение внешней ссылки на другую внешнюю ссылку на информацию о проблеме не приведет к ее сокращению в Stackoverflow.   -  person Mike Kinghan    schedule 14.01.2017
comment
Я добавил части вывода. Общая длина составляет 60 000 символов, поэтому она не помещается в stackoverflow. Опубликовали начало, которое, надеюсь, является полезным разделом?   -  person P-M    schedule 15.01.2017


Ответы (1)


Исходный код C++, который не удалось скомпилировать, использует функции из стандарта C++14, поэтому для него требуется параметр компилятора -std=c++14, который не передается через вашу команду ./configure.

Это ошибка в автонастройке пакета (который генерирует скрипт configure). Как пользователь пакета, вам не нужно указывать применимый стандарт языка C++ для успешной сборки: он должен быть предварительно настроен.

Возможно, вы видите эту ошибку, потому что вы используете главную ветку репозитория, а не стабильный выпуск пакета, но это все равно качественная оплошность, если главная ветка не строится с ./configure по умолчанию - и это не так. : Подтверждаю ваш билд брейк.

Вы можете управлять параметрами компиляции C++, которые будет генерировать ./configure, назначив нужные параметры 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'

Он подавляет некоторые незначительные предупреждения в сборке, но в этом нет необходимости.

person Mike Kinghan    schedule 15.01.2017
comment
В итоге я запустил sudo ./configure CXXFLAGS="-std=gnu++14" PYTHON="/home/pmj27/anaconda/bin/python2.7" CAIROMM_LIBS="-L/home/pmj27/anaconda/include/cairomm-1.0/cairomm" --enable-openmp, который успешно скомпилировался. (Я не уверен, что часть CAIROMM_LIBS была строго необходима.) Однако по какой-то причине python не находит пакет. - person P-M; 16.01.2017