Makefile:500: рецептата за целта „graph_cairo_draw.lo“ е неуспешна

Опитвам се да компилирам текущата git (2.19dev) версия на graph-tool. Доколкото мога да разбера, се използва 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.logs: http://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

Има много повече редове с грешки, но публикуването на всичко надхвърля ограничението за знаци.


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. Предполагам, че ако го изтеглите през htmls, той също трябва да изчезне? т.е. командата трябва да бъде 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.

Това е грешка в autotooling на пакета (който генерира скрипта 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