树莓派4b+部署realsense的踩坑问题小记(undefined reference of “__atomic_load_8“)
原创
©著作权归作者所有:来自51CTO博客作者wx58438afac3cd5的原创作品,请联系作者获取转载授权,否则将追究法律责任
本文并不基于ubuntu部署,而是基于官方的raspbianOS部署
0.全局代理
如果你有魔法并且有Clash的话,建议在clash上启用AllowLAN,配置默认端口7890,然后在树莓派上配置全局代理:
export http_proxy="http://ip:port"
export https_proxy="http://ip:port"
如果要取消全局代理:
unset http_proxy
unset https_proxy
设置git代理:
git config --global http.proxy 'http://ip:port'
git config --global https.proxy 'http://ip:port'
取消git代理:
git config --global --unset http.proxy
git config --global --unset https.proxy
1.扩大内存
默认的swap分区太小,编译时容易卡死,并且不会报错,所以首先要扩大swap分区。同时,可以用带有资源监控的SSH客户端(比如FinalShell)来操作。
free -m
cd /opt/ && sudo mkdir swap_2g && cd swap_2g
sudo touch swap
sudo dd if=/dev/zero of=/opt/swap_2g/swap bs=1024 count=2048000
sudo mkswap /opt/swap_2g/swap
sudo swapon /opt/swap_2g/sawp
sudo echo "/opt/swap_temp/sawp /swap swap defaults 0 0" >> /etc/fstab
2.安装依赖+切换编译器
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-get install -y git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
笔者在安装上述依赖后,编译会遇到undefined reference of "__atomic_load_8"一系列报错:
经过研究发现相关的库用到了原子操作(atomic库),该库在C++11中正式被支持,且需要加入编译选项
。
而树莓派默认GCC版本过低,是无法编译的。因此要安装需要切换默认编译器为Clang来编译(不推荐交叉编译,建议直接用最新的clang来编译)。
安装Clang:
sudo apt-get install llvm
sudo apt-get install clang
切换编译器:
sudo update-alternatives --config c++
在该页面选择Clang即可:
There are 2 choices for the alternative c++ (providing /usr/bin/c++).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/g++ 20 auto mode
1 /usr/bin/clang++ 10 manual mode
2 /usr/bin/g++ 20 manual mode
Press enter to keep the current choice[*], or type selection number: 1
3.下载SDK源码并编译安装
下载SDK:
git clone https://github.com/IntelRealSense/librealsense.git
编译准备:
cd librealsense
mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true \
-DFORCE_RSUSB_BACKEND=ON -DBUILD_WITH_TM2=false -DIMPORT_DEPTH_CAM_FW=false -DCMAKE_EXE_LINKER_FLAGS="-latomic"
注意,一定要加-DCMAKE_EXE_LINKER_FLAGS="-latomic"
选项。
编译安装:
sudo make uninstall && make clean && make -j2 && sudo make install -2
编译安装完成后,移除摄像头设备,然后执行:
sudo ./scripts/setup_udev_rules.sh
注意该命令是在克隆的仓库根目录下执行的,或者直接找到script
目录来执行脚本。
至此,安装完毕。
开启viewer
的命令: