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