Ubuntu编译视觉SLAM十四讲CH9



    高版本的gcc向下兼容,支持低版本的C++标准。

 查看g++版本:

g++  --version

 在ubuntu20.04上编译时,会出现下面的error,程序都没什么问题,会出现一大堆报程序错误的提示,这里我总结了一个小技巧:一般会出现这种错误,首先排查CmakeLists文件里的c++版本和自己电脑对不对应。

Ubuntu20.04安装的一般是c++14。

In file included from /usr/local/include/ceres/internal/parameter_dims.h:37:0,
                 from /usr/local/include/ceres/internal/autodiff.h:151,
                 from /usr/local/include/ceres/autodiff_cost_function.h:130,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’
 struct SumImpl<std::integer_sequence<T, N, Ns...>> {
                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:46: error: wrong number of template arguments (3, should be 1)
 struct SumImpl<std::integer_sequence<T, N, Ns...>> {
                                              ^~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
 struct SumImpl;
        ^~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:49: error: expected unqualified-id before ‘>’ token
 struct SumImpl<std::integer_sequence<T, N, Ns...>> {
                                                 ^~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’
 struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:51: error: wrong number of template arguments (4, should be 1)
 struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
                                                   ^~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
 struct SumImpl;
        ^~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:54: error: expected unqualified-id before ‘>’ token
 struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
                                                      ^~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’
 struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:59: error: wrong number of template arguments (6, should be 1)
 struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
                                                           ^~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
 struct SumImpl;
        ^~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:62: error: expected unqualified-id before ‘>’ token
 struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
                                                              ^~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’
 struct SumImpl<std::integer_sequence<T, N>> {
                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:41: error: wrong number of template arguments (2, should be 1)
 struct SumImpl<std::integer_sequence<T, N>> {
                                         ^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
 struct SumImpl;
        ^~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:42: error: expected unqualified-id before ‘>’ token
 struct SumImpl<std::integer_sequence<T, N>> {
                                          ^~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’
 struct SumImpl<std::integer_sequence<T>> {
                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:38: error: template argument 1 is invalid
 struct SumImpl<std::integer_sequence<T>> {
                                      ^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:39: error: expected unqualified-id before ‘>’ token
 struct SumImpl<std::integer_sequence<T>> {
                                       ^~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’
                          std::integer_sequence<T, N, Ns...>,
                               ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: template argument 3 is invalid
                          std::integer_sequence<T, N, Ns...>,
                                                           ^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: type/value mismatch at argument 4 in template parameter list for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: note:   expected a type, got ‘N’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’
 struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> {
                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:57: error: wrong number of template arguments (3, should be 4)
 struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> {
                                                         ^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:130:8: note: provided for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’
 struct ExclusiveScanImpl;
        ^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’
       typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;
                                                     ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:70: error: template argument 4 is invalid
       typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;
                                                                      ^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:16: error: expected nested-name-specifier
       typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/internal/autodiff.h:151:0,
                 from /usr/local/include/ceres/autodiff_cost_function.h:130,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/parameter_dims.h:44:55: error: ‘integer_sequence’ is not a member of ‘std’
 constexpr bool IsValidParameterDimensionSequence(std::integer_sequence<int>) {
                                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:44:72: error: expected primary-expression before ‘int’
 constexpr bool IsValidParameterDimensionSequence(std::integer_sequence<int>) {
                                                                        ^~~
/usr/local/include/ceres/internal/parameter_dims.h:50:10: error: ‘template<int N, int ...Ts> constexpr const bool ceres::internal::IsValidParameterDimensionSequence’ redeclared as different kind of symbol
     std::integer_sequence<int, N, Ts...>) {
          ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:44:16: note: previous declaration ‘constexpr const bool ceres::internal::IsValidParameterDimensionSequence’
 constexpr bool IsValidParameterDimensionSequence(std::integer_sequence<int>) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:50:10: error: ‘integer_sequence’ is not a member of ‘std’
     std::integer_sequence<int, N, Ts...>) {
          ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:50:27: error: expected primary-expression before ‘int’
     std::integer_sequence<int, N, Ts...>) {
                           ^~~
/usr/local/include/ceres/internal/parameter_dims.h:50:40: error: expected ‘)’ before ‘>’ token
     std::integer_sequence<int, N, Ts...>) {
                                        ^
/usr/local/include/ceres/internal/parameter_dims.h:69:27: error: ‘integer_sequence’ in namespace ‘std’ does not name a template type
   using Parameters = std::integer_sequence<int, Ns...>;
                           ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:74:41: error: there are no arguments to ‘Parameters’ that depend on a template parameter, so a declaration of ‘Parameters’ must be available [-fpermissive]
       IsValidParameterDimensionSequence(Parameters());
                                         ^~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:74:41: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/local/include/ceres/internal/parameter_dims.h:85:16: error: ‘integer_sequence’ is not a member of ‘std’
       Sum<std::integer_sequence<int, Ns...>>::Value;
                ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:85:16: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/parameter_dims.h:85:43: error: template argument 1 is invalid
       Sum<std::integer_sequence<int, Ns...>>::Value;
                                           ^~
/usr/local/include/ceres/internal/parameter_dims.h:101:20: error: ‘std::integer_sequence’ has not been declared
       T* ptr, std::integer_sequence<int, Indices...>) {
                    ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:101:36: error: expected ‘,’ or ‘...’ before ‘<’ token
       T* ptr, std::integer_sequence<int, Indices...>) {
                                    ^
/usr/local/include/ceres/internal/parameter_dims.h: In static member function ‘static std::array<T*, ceres::internal::ParameterDims<IsDynamic, Ns>::kNumParameterBlocks> ceres::internal::ParameterDims<IsDynamic, Ns>::GetUnpackedParameters(T*)’:
/usr/local/include/ceres/internal/parameter_dims.h:94:35: error: ‘Parameters’ was not declared in this scope
     using Offsets = ExclusiveScan<Parameters>;
                                   ^~~~~~~~~~
/usr/local/include/ceres/internal/parameter_dims.h:94:35: note: suggested alternative: ‘ParameterDims’
     using Offsets = ExclusiveScan<Parameters>;
                                   ^~~~~~~~~~
                                   ParameterDims
/usr/local/include/ceres/internal/parameter_dims.h:94:45: error: template argument 1 is invalid
     using Offsets = ExclusiveScan<Parameters>;
                                             ^
/usr/local/include/ceres/internal/parameter_dims.h:95:39: error: there are no arguments to ‘Offsets’ that depend on a template parameter, so a declaration of ‘Offsets’ must be available [-fpermissive]
     return GetUnpackedParameters(ptr, Offsets());
                                       ^~~~~~~
In file included from /usr/local/include/ceres/internal/autodiff.h:152:0,
                 from /usr/local/include/ceres/autodiff_cost_function.h:130,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/variadic_evaluate.h: At global scope:
/usr/local/include/ceres/internal/variadic_evaluate.h:53:39: error: ‘std::integer_sequence’ has not been declared
                                  std::integer_sequence<int, Indices...>) {
                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/variadic_evaluate.h:53:55: error: expected ‘,’ or ‘...’ before ‘<’ token
                                  std::integer_sequence<int, Indices...>) {
                                                       ^
/usr/local/include/ceres/internal/variadic_evaluate.h:66:39: error: ‘std::integer_sequence’ has not been declared
                                  std::integer_sequence<int>) {
                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/variadic_evaluate.h:66:55: error: expected ‘,’ or ‘...’ before ‘<’ token
                                  std::integer_sequence<int>) {
                                                       ^
/usr/local/include/ceres/internal/variadic_evaluate.h: In function ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*)’:
/usr/local/include/ceres/internal/variadic_evaluate.h:77:12: error: ‘make_integer_sequence’ in namespace ‘std’ does not name a template type
       std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
            ^~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/variadic_evaluate.h:80:44: error: there are no arguments to ‘ParameterBlockIndices’ that depend on a template parameter, so a declaration of ‘ParameterBlockIndices’ must be available [-fpermissive]
       functor, input, output, IsDynamic(), ParameterBlockIndices());
                                            ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/autodiff_cost_function.h:130:0,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/autodiff.h: At global scope:
/usr/local/include/ceres/internal/autodiff.h:217:39: error: ‘integer_sequence’ is not a member of ‘std’
 struct Make1stOrderPerturbations<std::integer_sequence<int, N, Ns...>,
                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:217:39: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:217:69: error: template argument 1 is invalid
 struct Make1stOrderPerturbations<std::integer_sequence<int, N, Ns...>,
                                                                     ^
/usr/local/include/ceres/internal/autodiff.h:232:39: error: ‘integer_sequence’ is not a member of ‘std’
 struct Make1stOrderPerturbations<std::integer_sequence<int>,
                                       ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:232:39: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:232:59: error: template argument 1 is invalid
 struct Make1stOrderPerturbations<std::integer_sequence<int>,
                                                           ^
/usr/local/include/ceres/internal/autodiff.h:282:31: error: ‘integer_sequence’ is not a member of ‘std’
 struct Take1stOrderParts<std::integer_sequence<int, N, Ns...>,
                               ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:282:31: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:282:61: error: template argument 1 is invalid
 struct Take1stOrderParts<std::integer_sequence<int, N, Ns...>,
                                                             ^
/usr/local/include/ceres/internal/autodiff.h:298:31: error: ‘integer_sequence’ is not a member of ‘std’
 struct Take1stOrderParts<std::integer_sequence<int>, ParameterIdx, Offset> {
                               ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:298:31: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:298:51: error: template argument 1 is invalid
 struct Take1stOrderParts<std::integer_sequence<int>, ParameterIdx, Offset> {
                                                   ^
In file included from /usr/local/include/ceres/ceres.h:43:0,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/cost_function_to_functor.h:161:29: error: ‘std::integer_sequence’ has not been declared
                        std::integer_sequence<int, Indices...>) {
                             ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/cost_function_to_functor.h:161:45: error: expected ‘,’ or ‘...’ before ‘<’ token
                        std::integer_sequence<int, Indices...>) {
                                             ^
/usr/local/include/ceres/cost_function_to_functor.h: In member function ‘bool ceres::CostFunctionToFunctor<kNumResiduals, Ns>::operator()(const T*, Ts* ...) const’:
/usr/local/include/ceres/cost_function_to_functor.h:148:14: error: ‘make_integer_sequence’ in namespace ‘std’ does not name a template type
         std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
              ^~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/cost_function_to_functor.h:150:41: error: there are no arguments to ‘Indices’ that depend on a template parameter, so a declaration of ‘Indices’ must be available [-fpermissive]
         GetParameterPointers<T>(params, Indices());
                                         ^~~~~~~
In file included from /usr/local/include/ceres/dynamic_numeric_diff_cost_function.h:44:0,
                 from /usr/local/include/ceres/ceres.h:49,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/numeric_diff.h: At global scope:
/usr/local/include/ceres/internal/numeric_diff.h:445:48: error: ‘integer_sequence’ is not a member of ‘std’
                                           std::integer_sequence<int, N, Ns...>,
                                                ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/numeric_diff.h:445:48: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/numeric_diff.h:445:78: error: template argument 2 is invalid
                                           std::integer_sequence<int, N, Ns...>,
                                                                              ^
/usr/local/include/ceres/internal/numeric_diff.h:490:48: error: ‘integer_sequence’ is not a member of ‘std’
                                           std::integer_sequence<int>,
                                                ^~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/numeric_diff.h:490:48: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/numeric_diff.h:490:68: error: template argument 2 is invalid
                                           std::integer_sequence<int>,
                                                                    ^
In file included from /usr/local/include/g2o/core/base_binary_edge.h:30:0,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_g2o.cpp:2:
/usr/local/include/g2o/core/base_fixed_sized_edge.h:179:32: error: ‘index_sequence’ is not a member of ‘std’
   struct HessianTupleType<std::index_sequence<Ints...>> {
                                ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:179:32: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:179:51: error: expected parameter pack before ‘...’
   struct HessianTupleType<std::index_sequence<Ints...>> {
                                                   ^~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:179:51: error: template argument 1 is invalid
/usr/local/include/g2o/core/base_fixed_sized_edge.h:179:54: error: expected unqualified-id before ‘>’ token
   struct HessianTupleType<std::index_sequence<Ints...>> {
                                                      ^~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:186:38: error: ‘make_index_sequence’ is not a member of ‘std’
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
                                      ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:186:38: error: ‘make_index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:186:58: error: template argument 1 is invalid
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
                                                          ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:186:16: error: expected nested-name-specifier
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:188:38: error: ‘make_index_sequence’ is not a member of ‘std’
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
                                      ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:188:38: error: ‘make_index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:188:58: error: template argument 1 is invalid
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
                                                          ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:188:16: error: expected nested-name-specifier
       typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:208:32: error: ‘std::index_sequence’ has not been declared
   bool allVerticesFixedNs(std::index_sequence<Ints...>) const;
                                ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:208:46: error: expected ‘,’ or ‘...’ before ‘<’ token
   bool allVerticesFixedNs(std::index_sequence<Ints...>) const;
                                              ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:213:75: error: ‘std::index_sequence’ has not been declared
   void linearizeOplus_allocate(JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>);
                                                                           ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:213:89: error: expected ‘,’ or ‘...’ before ‘<’ token
   void linearizeOplus_allocate(JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>);
                                                                                         ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:221:30: error: ‘std::index_sequence’ has not been declared
   void linearizeOplusNs(std::index_sequence<Ints...>);
                              ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:221:44: error: expected ‘,’ or ‘...’ before ‘<’ token
   void linearizeOplusNs(std::index_sequence<Ints...>);
                                            ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:245:38: error: ‘std::index_sequence’ has not been declared
                                 std::index_sequence<Ints...>);
                                      ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:245:52: error: expected ‘,’ or ‘...’ before ‘<’ token
                                 std::index_sequence<Ints...>);
                                                    ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:250:65: error: ‘std::index_sequence’ has not been declared
   void constructOffDiagonalQuadraticFormMs(const AtOType&, std::index_sequence<>);
                                                                 ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:250:79: error: expected ‘,’ or ‘...’ before ‘<’ token
   void constructOffDiagonalQuadraticFormMs(const AtOType&, std::index_sequence<>);
                                                                               ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:253:69: error: ‘std::index_sequence’ has not been declared
   void constructOffDiagonalQuadraticFormMs(const AtOType& AtO, std::index_sequence<Ints...>);
                                                                     ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:253:83: error: expected ‘,’ or ‘...’ before ‘<’ token
   void constructOffDiagonalQuadraticFormMs(const AtOType& AtO, std::index_sequence<Ints...>);
                                                                                   ^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:270:3: error: ‘HessianTuple’ does not name a type; did you mean ‘HessianTupleType’?
   HessianTuple _hessianTuple;
   ^~~~~~~~~~~~
   HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h:271:3: error: ‘HessianTupleTransposed’ does not name a type; did you mean ‘HessianTupleType’?
   HessianTupleTransposed _hessianTupleTransposed;
   ^~~~~~~~~~~~~~~~~~~~~~
   HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h: In constructor ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>::BaseFixedSizedEdge()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.h:193:9: error: class ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>’ does not have any field named ‘_hessianTuple’
         _hessianTuple(internal::createHessianMaps(_hessianTuple)),
         ^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:193:51: error: ‘_hessianTuple’ was not declared in this scope
         _hessianTuple(internal::createHessianMaps(_hessianTuple)),
                                                   ^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:193:51: note: suggested alternative: ‘HessianTupleType’
         _hessianTuple(internal::createHessianMaps(_hessianTuple)),
                                                   ^~~~~~~~~~~~~
                                                   HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h:194:9: error: class ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>’ does not have any field named ‘_hessianTupleTransposed’
         _hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:194:61: error: ‘_hessianTupleTransposed’ was not declared in this scope
         _hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
                                                             ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:194:61: note: suggested alternative: ‘HessianTupleType’
         _hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
                                                             ^~~~~~~~~~~~~~~~~~~~~~~
                                                             HessianTupleType
In file included from /usr/local/include/g2o/core/base_fixed_sized_edge.h:278:0,
                 from /usr/local/include/g2o/core/base_binary_edge.h:30,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_g2o.cpp:2:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: ‘bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixedNs’ is not a static data member of ‘class g2o::BaseFixedSizedEdge<D, E, VertexTypes>’
     std::index_sequence<Ints...>) const {
          ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: template definition of non-template ‘bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixedNs’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixed() const’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:43:34: error: ‘make_index_sequence’ is not a member of ‘std’
   return allVerticesFixedNs(std::make_index_sequence<_nr_of_vertices>());
                                  ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:43:71: error: expected primary-expression before ‘)’ token
   return allVerticesFixedNs(std::make_index_sequence<_nr_of_vertices>());
                                                                       ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructQuadraticForm()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:55:35: error: ‘make_index_sequence’ is not a member of ‘std’
                              std::make_index_sequence<_nr_of_vertices>());
                                   ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:55:72: error: expected primary-expression before ‘)’ token
                              std::make_index_sequence<_nr_of_vertices>());
                                                                        ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:58:35: error: ‘make_index_sequence’ is not a member of ‘std’
                              std::make_index_sequence<_nr_of_vertices>());
                                   ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:58:72: error: expected primary-expression before ‘)’ token
                              std::make_index_sequence<_nr_of_vertices>());
                                                                        ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:65:74: error: ‘std::index_sequence’ has not been declared
     const InformationType& omega, const ErrorVector& weightedError, std::index_sequence<Ints...>) {
                                                                          ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:65:88: error: expected ‘,’ or ‘...’ before ‘<’ token
     const InformationType& omega, const ErrorVector& weightedError, std::index_sequence<Ints...>) {
                                                                                        ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:75:26: error: ‘std::index_sequence’ has not been declared
     const AtOType&, std::index_sequence<>) {}
                          ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:75:40: error: expected ‘,’ or ‘...’ before ‘<’ token
     const AtOType&, std::index_sequence<>) {}
                                        ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:80:30: error: ‘std::index_sequence’ has not been declared
     const AtOType& AtO, std::index_sequence<Ints...>) {
                              ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:80:44: error: expected ‘,’ or ‘...’ before ‘<’ token
     const AtOType& AtO, std::index_sequence<Ints...>) {
                                            ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructOffDiagonalQuadraticFormM(const AtOType&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:98:45: error: ‘_hessianTupleTransposed’ was not declared in this scope
       auto& hessianTransposed = std::get<K>(_hessianTupleTransposed);
                                             ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:98:45: note: suggested alternative: ‘hessianTransposed’
       auto& hessianTransposed = std::get<K>(_hessianTupleTransposed);
                                             ^~~~~~~~~~~~~~~~~~~~~~~
                                             hessianTransposed
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:101:35: error: ‘_hessianTuple’ was not declared in this scope
       auto& hessian = std::get<K>(_hessianTuple);
                                   ^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:101:35: note: suggested alternative: ‘HessianTupleType’
       auto& hessian = std::get<K>(_hessianTuple);
                                   ^~~~~~~~~~~~~
                                   HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructQuadraticFormN(const InformationType&, const ErrorVector&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:122:54: error: ‘make_index_sequence’ is not a member of ‘std’
     constructOffDiagonalQuadraticFormMs<N>(AtO, std::make_index_sequence<_nr_of_vertices - N - 1>());
                                                      ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:122:99: error: expected primary-expression before ‘)’ token
     constructOffDiagonalQuadraticFormMs<N>(AtO, std::make_index_sequence<_nr_of_vertices - N - 1>());
                                                                                                   ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplus(g2o::JacobianWorkspace&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:129:51: error: ‘make_index_sequence’ is not a member of ‘std’
   linearizeOplus_allocate(jacobianWorkspace, std::make_index_sequence<_nr_of_vertices>());
                                                   ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:129:88: error: expected primary-expression before ‘)’ token
   linearizeOplus_allocate(jacobianWorkspace, std::make_index_sequence<_nr_of_vertices>());
                                                                                        ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:136:48: error: ‘std::index_sequence’ has not been declared
     JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>) {
                                                ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:136:62: error: expected ‘,’ or ‘...’ before ‘<’ token
     JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>) {
                                                              ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:190:70: error: variable or field ‘linearizeOplusNs’ declared void
 void BaseFixedSizedEdge<D, E, VertexTypes...>::linearizeOplusNs(std::index_sequence<Ints...>) {
                                                                      ^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:190:70: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplus()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:199:25: error: ‘make_index_sequence’ is not a member of ‘std’
   linearizeOplusNs(std::make_index_sequence<_nr_of_vertices>());
                         ^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:199:62: error: expected primary-expression before ‘)’ token
   linearizeOplusNs(std::make_index_sequence<_nr_of_vertices>());
                                                              ^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::mapHessianMemory(number_t*, int, int, bool)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:225:57: error: ‘_hessianTupleTransposed’ was not declared in this scope
     tuple_apply_i(MapHessianMemoryK{d, vj_dim, vi_dim}, _hessianTupleTransposed,
                                                         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:225:57: note: suggested alternative: ‘HessianTupleType’
     tuple_apply_i(MapHessianMemoryK{d, vj_dim, vi_dim}, _hessianTupleTransposed,
                                                         ^~~~~~~~~~~~~~~~~~~~~~~
                                                         HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:228:57: error: ‘_hessianTuple’ was not declared in this scope
     tuple_apply_i(MapHessianMemoryK{d, vi_dim, vj_dim}, _hessianTuple,
                                                         ^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:228:57: note: suggested alternative: ‘HessianTupleType’
     tuple_apply_i(MapHessianMemoryK{d, vi_dim, vj_dim}, _hessianTuple,
                                                         ^~~~~~~~~~~~~
                                                         HessianTupleType
In file included from /usr/local/include/ceres/internal/autodiff.h:151:0,
                 from /usr/local/include/ceres/autodiff_cost_function.h:130,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/parameter_dims.h: In instantiation of ‘constexpr const bool ceres::internal::ParameterDims<false, 9, 3>::kIsValid’:
/usr/local/include/ceres/internal/parameter_dims.h:73:25:   required from ‘class ceres::internal::ParameterDims<false, 9, 3>’
/usr/local/include/ceres/sized_cost_function.h:49:47:   required from ‘class ceres::SizedCostFunction<2, 9, 3>’
/usr/local/include/ceres/autodiff_cost_function.h:154:7:   required from ‘class ceres::AutoDiffCostFunction<SnavelyReprojectionError, 2, 9, 3>’
/home/liqiang/Desktop/slambook2/ch9/SnavelyReprojectionError.h:62:65:   required from here
/usr/local/include/ceres/internal/parameter_dims.h:74:51: error: ‘Parameters’ was not declared in this scope
       IsValidParameterDimensionSequence(Parameters());
                                         ~~~~~~~~~~^~
/usr/local/include/ceres/internal/parameter_dims.h:74:51: note: suggested alternative: ‘ParameterDims’
       IsValidParameterDimensionSequence(Parameters());
                                         ~~~~~~~~~~^~
                                         ParameterDims
/usr/local/include/ceres/internal/parameter_dims.h:74:40: error: ‘ceres::internal::IsValidParameterDimensionSequence’ cannot be used as a function
       IsValidParameterDimensionSequence(Parameters());
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/autodiff_cost_function.h:130:0,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 2; ParameterDims = ceres::internal::ParameterDims<false, 9, 3>; Functor = SnavelyReprojectionError; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:210:69:   required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = SnavelyReprojectionError; int kNumResiduals = 2; int ...Ns = {9, 3}]’
/home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:70:1:   required from here
/usr/local/include/ceres/internal/autodiff.h:315:56: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 9, 3>’
   using Parameters = typename ParameterDims::Parameters;
                                                        ^
/usr/local/include/ceres/internal/autodiff.h:348:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 9, 3>’
   Make1stOrderPerturbations<Parameters>::Apply(parameters,
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
                                                parameters_as_jets.data());
                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:357:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 9, 3>’
   Take1stOrderParts<Parameters>::Apply(
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
       num_outputs, residuals_as_jets.data(), jacobians);
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/internal/autodiff.h:152:0,
                 from /usr/local/include/ceres/autodiff_cost_function.h:130,
                 from /usr/local/include/ceres/ceres.h:37,
                 from /home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:2:
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 9, 3>; Functor = SnavelyReprojectionError; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:108:45:   required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 9, 3>; Functor = SnavelyReprojectionError; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:207:55:   required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = SnavelyReprojectionError; int kNumResiduals = 2; int ...Ns = {9, 3}]’
/home/liqiang/Desktop/slambook2/ch9/bundle_adjustment_ceres.cpp:70:1:   required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:80:65: error: ‘ParameterBlockIndices’ was not declared in this scope
       functor, input, output, IsDynamic(), ParameterBlockIndices());
                                            ~~~~~~~~~~~~~~~~~~~~~^~
CMakeFiles/bundle_adjustment_ceres.dir/build.make:82: recipe for target 'CMakeFiles/bundle_adjustment_ceres.dir/bundle_adjustment_ceres.cpp.o' failed
make[2]: *** [CMakeFiles/bundle_adjustment_ceres.dir/bundle_adjustment_ceres.cpp.o] Error 1
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/bundle_adjustment_ceres.dir/all' failed
make[1]: *** [CMakeFiles/bundle_adjustment_ceres.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
CMakeFiles/bundle_adjustment_g2o.dir/build.make:82: recipe for target 'CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o' failed
make[2]: *** [CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o] Error 1
CMakeFiles/Makefile2:126: recipe for target 'CMakeFiles/bundle_adjustment_g2o.dir/all' failed
make[1]: *** [CMakeFiles/bundle_adjustment_g2o.dir/all] Error 2
Makefile:103: recipe for target 'all' failed
make: *** [all] Error 2

ubuntu18.04编译的时候出现了:
这里都编译到100%的时候,突然就报错了,原因是没有链接到fmt库

Scanning dependencies of target bal_common
[ 16%] Building CXX object CMakeFiles/bal_common.dir/common.cpp.o
[ 33%] Linking CXX static library libbal_common.a
[ 33%] Built target bal_common
Scanning dependencies of target bundle_adjustment_ceres
Scanning dependencies of target bundle_adjustment_g2o
[ 50%] Building CXX object CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o
[ 66%] Building CXX object CMakeFiles/bundle_adjustment_ceres.dir/bundle_adjustment_ceres.cpp.o
[ 83%] Linking CXX executable bundle_adjustment_ceres
[ 83%] Built target bundle_adjustment_ceres
[100%] Linking CXX executable bundle_adjustment_g2o
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `fmt::v8::appender fmt::v8::detail::write<char, fmt::v8::appender>(fmt::v8::appender, fmt::v8::basic_string_view<fmt::v8::type_identity<char>::type>, fmt::v8::basic_format_specs<char> const&, fmt::v8::detail::locale_ref) [clone .isra.803]':
bundle_adjustment_g2o.cpp:(.text+0x2d22): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `SolveBA(BALProblem&)':
bundle_adjustment_g2o.cpp:(.text+0x3b4f): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
bundle_adjustment_g2o.cpp:(.text+0x3b76): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<float, 0>(float) [clone .isra.258]':
bundle_adjustment_g2o.cpp:(.text.unlikely+0xc): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `unsigned long long fmt::v8::detail::precision_checker<fmt::v8::detail::error_handler>::operator()<float, 0>(float) [clone .isra.269]':
bundle_adjustment_g2o.cpp:(.text.unlikely+0x1c): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `Sophus::SO3<double, 0>::expAndTheta(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double*)':
bundle_adjustment_g2o.cpp:(.text._ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd[_ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd]+0x21e): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
bundle_adjustment_g2o.cpp:(.text._ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd[_ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd]+0x23e): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
bundle_adjustment_g2o.cpp:(.text._ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd[_ZN6Sophus3SO3IdLi0EE11expAndThetaERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEPd]+0x2ca): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `VertexPoseAndIntrinsics::oplusImpl(double const*)':
bundle_adjustment_g2o.cpp:(.text._ZN23VertexPoseAndIntrinsics9oplusImplEPKd[_ZN23VertexPoseAndIntrinsics9oplusImplEPKd]+0x2bf): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
bundle_adjustment_g2o.cpp:(.text._ZN23VertexPoseAndIntrinsics9oplusImplEPKd[_ZN23VertexPoseAndIntrinsics9oplusImplEPKd]+0x2de): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `decltype (({parm#1}.begin)()) fmt::v8::formatter<fmt::v8::basic_string_view<char>, char, void>::parse<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> >(fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>&)':
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x268): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x3b0): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x3bc): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x5c0): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x5cc): undefined reference to `fmt::v8::detail::throw_format_error(char const*)'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o:bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_[_ZN3fmt2v89formatterINS0_17basic_string_viewIcEEcvE5parseINS0_26basic_format_parse_contextIcNS0_6detail13error_handlerEEEEEDTcldtfp_5beginEERT_]+0x5d8): more undefined references to `fmt::v8::detail::throw_format_error(char const*)' follow
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `void fmt::v8::detail::value<fmt::v8::basic_format_context<fmt::v8::appender, char> >::format_custom_arg<Eigen::Transpose<Eigen::Matrix<double, 3, 1, 0, 3, 1> const>, fmt::v8::detail::fallback_formatter<Eigen::Transpose<Eigen::Matrix<double, 3, 1, 0, 3, 1> const>, char, void> >(void*, fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>&, fmt::v8::basic_format_context<fmt::v8::appender, char>&)':
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeIKNS8_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEENS1_18fallback_formatterISD_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_[_ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeIKNS8_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEENS1_18fallback_formatterISD_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_]+0x206): undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `void fmt::v8::detail::value<fmt::v8::basic_format_context<fmt::v8::appender, char> >::format_custom_arg<Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> const>, fmt::v8::detail::fallback_formatter<Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> const>, char, void> >(void*, fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>&, fmt::v8::basic_format_context<fmt::v8::appender, char>&)':
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeIKNS8_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEENS1_18fallback_formatterISD_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_[_ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeIKNS8_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEENS1_18fallback_formatterISD_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_]+0x206): undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'
CMakeFiles/bundle_adjustment_g2o.dir/bundle_adjustment_g2o.cpp.o: In function `void fmt::v8::detail::value<fmt::v8::basic_format_context<fmt::v8::appender, char> >::format_custom_arg<Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> >, fmt::v8::detail::fallback_formatter<Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> >, char, void> >(void*, fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>&, fmt::v8::basic_format_context<fmt::v8::appender, char>&)':
bundle_adjustment_g2o.cpp:(.text._ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeINS8_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEENS1_18fallback_formatterISC_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_[_ZN3fmt2v86detail5valueINS0_20basic_format_contextINS0_8appenderEcEEE17format_custom_argIN5Eigen9TransposeINS8_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEENS1_18fallback_formatterISC_cvEEEEvPvRNS0_26basic_format_parse_contextIcNS1_13error_handlerEEERS5_]+0x206): undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'
collect2: error: ld returned 1 exit status
CMakeFiles/bundle_adjustment_g2o.dir/build.make:104: recipe for target 'bundle_adjustment_g2o' failed
make[2]: *** [bundle_adjustment_g2o] Error 1
CMakeFiles/Makefile2:126: recipe for target 'CMakeFiles/bundle_adjustment_g2o.dir/all' failed
make[1]: *** [CMakeFiles/bundle_adjustment_g2o.dir/all] Error 2
Makefile:103: recipe for target 'all' failed
make: *** [all] Error 2

解决办法:在target_link_libraries后面加上fmt

target_link_libraries( direct_semidense ${OpenCV_LIBS} ${G2O_LIBS}  fmt)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙有肥鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值