buildroot编译robot_pose_ekf报错查找不到orocos-bfl
在用rk3399编译ros代码过程中,发现编译robot_pose_ekf时候CMakeLists.txt报出
Perhaps you should add the directory containing `orocos-bfl.pc’
to the PKG_CONFIG_PATH environment variable
Package ‘orocos-bfl’, required by ‘world’, not found
CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:419 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:597 (_pkg_check_modules_internal)
CMakeLists.txt:7 (pkg_check_modules)
– Configuring incomplete, errors occurred!
这个问题是查找orocos-bfl的pkgconfig没法找到,所以链接不到这个模块lib和include。这个问题是瑞芯微没有编译orocos-bfl这个包导致的。
先去
https://github.com/ros-gbp/bfl-release
下载orocos-bfl,然后把版本切到
release/kinetic/bfl/0.7.0-2
将文件拷贝ros包目录下(根据自己的目录修改吧)
/root/rk3399-linux-sdk/buildroot/package/rockchip/ros/bfl
添加三个文件
bfl.mk
BFL_VERSION = 1.0.0
BFL_SITE_METHOD = local
BFL_SITE = $(TOPDIR)/package/rockchip/ros/bfl
BFL_DEPENDENCIES = roscpp
$(eval $(cmake-package))
$(eval $(host-cmake-package))
Config.in
config BR2_PACKAGE_BFL
bool “bfl”
depends on BR2_PACKAGE_EIGEN
help
bfl
Config.in.host
config BR2_PACKAGE_HOST_BFL
bool “host bfl”
help
host bfl
弄好这几个文件后,需要运行一次configure ,这个文件生成配置的。具体我也不太懂,想深入学习的同学自己去了解哈。
下面编译器参数需要根据自己的情况去修改
./configure --prefix=/root/rk3399-linux-sdk/buildroot/output/rockchip_rk3399/build/bfl-1.0.0 CC=/root/rk3399-linux-sdk/buildroot/output/rockchip_rk3399/host/bin/aarch64-buildroot-linux-gnu-gcc CXX=/root/rk3399-linux-sdk/buildroot/output/rockchip_rk3399/host/bin/aarch64-buildroot-linux-gnu-g++
配置生成后运行
make host-bfl-dirclean && make host-bfl-rebuild
就生成了 /root/rk3399-linux-sdk/buildroot/output/rockchip_rk3399/host/lib/pkgconfig/orocos-bfl.pc
这时候就可以去编译robot_pose_ekf了