cartographer could not find git for clone of abseil
原理阐述:下载github上的abseil,然后单独编译这个库,然后更改部分cartographer和cartographer_ros的CMakeList.txt
一:下载abseil
网址:https://github.com/abseil/abseil-cpp.
安装abseil的静态库:
- mkdir build && cd build
- cmake …
- make
- sudo make install
安装abseil的动态库:可以将之前的build文件删掉,重新建立
- mkdir build && cd build
- cmake … -DBUILD_SHARED_LIBS=ON
- make
- sudo make install
二:更改cartographer的CMakeList.txt文件(有2处)和cartographer-config.cmake.in文件(有1处)
CMakeList.txt 第1处:
find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
CMakeList.txt 第2处:#默认的库文件是 standalone_absl
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::base
absl::synchronization
absl::strings
absl::flat_hash_map
absl::numeric
absl::flags)
然后重新编译即可
cartographer-config.cmake.in 1处:
find_package(Abseil ${QUIET_OR_REQUIRED_OPTION}) Abseil 改为 absl
三:更改cartographer_ros的CMakeList.txt,有2处
cartographer_ros 和 cartographer_rviz的改法均一致
find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
然后重新编译即可。
本实验经过验证,可行通过
安装 proto3,参考:https://www.jb51.net/article/163871.htm
Unrecognized syntax identifier “proto3”. This parser only recognizes “proto2”.
检查protobuf版本: $ protoc --version
下载源码编译安装:
1
2
3
4
5
6
7
8
9
10
|
sudo apt-get install autoconf automake libtool curl make g++ unzip git clone https: //github .com /google/protobuf .git cd protobuf git submodule update --init --recursive . /autogen .sh . /configure make make check sudo make install sudo ldconfig # refresh shared library cache. |
可能遇到问题
很有可能,执行过程中会出现以下错误提示:
./autogen.sh: 4: ./autogen.sh: autoreconf: not found
解决办法:执行以下命令即可。
1
2
3
|
sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool |
安装完成之后
执行以下命令验证安装结果,查看版本号。
protoc --version
恭喜得到:libprotoc 3.9.0 或更高版本号。
proto3是放在/usr/local/bin/protoc下的,删除/usr/bin/protoc,然后把/usr/local/bin/protoc放入/usr/bin目录下,或者建立软连接:
sudo mv /usr/bin/protoc /usr/bin/protoc.bk
sudo ln -s /usr/local/bin/protoc /usr/bin/protoc