刚接触交叉编译和ROS,记录一下给RK3308-CC-PLUS板子启用ROS模块后交叉编译遇到的问题和解决的过程。
1、menuconfig中没有ROS选项
按照这篇博客的步骤打开启用ROS模块,make menuconfig ->Target packages -> rockchip BSP packages中没有找到“ros BSP package”选项启用。
通过help发现这个条目依赖于“BR2_PACKAGE_PYTHON”和“BR2_PACKAGE_BOOST”,于是把这两个都打开,ros的条目顺利出现。
2、最坑的:cannot import name lru_cache
执行make,很快报错中止,错误信息为"cannot import name lru_cache".
在编译过程会给中buildroot自带的python2.7下载依赖。其中下载了pyparing包为最新的3.0.0b1版,里面的util.py文件引入了
from functools import lru_cache
这是python3才加入的特性,所以总是导致无法继续。在python2中可以使用functools32包实现,但在这里无法解决问题,
手动下载旧版的 pyparsing-2.4.7 ,把他解压后放到output/host/lib/python2.7/site-packages文件夹,并在这个文件夹内的setuptools.pth添加包的相对链接,再次执行make,编译顺利通过。(图片是全部编译完成后截的,本来文件夹中只有少数几个包)
pyparsing下载地址: https://pypi.org/simple/pyparsing/