如何在CLion 2022中借助Bazel插件调试百度Apollo相机驱动?
解决Apollo mainboard调试时找不到动态加载的相机驱动.so文件问题
方法1:给mainboard的BUILD目标添加强制依赖
找到cyber/mainboard/BUILD里的cc_binary目标,把相机驱动的共享库目标加到deps或者data属性中:
cc_binary( name = "mainboard", srcs = ["mainboard.cc"], # 保留原有配置 deps = [ # 原有依赖... "//modules/drivers/camera:camera_driver_lib", # 替换为实际相机驱动的目标路径 ], # 若无需编译依赖,仅需将.so打包到运行缓存,可改用data属性 # data = [ # "//modules/drivers/camera:camera_driver_lib", # ], )
这样Bazel会将相机驱动的.so文件纳入mainboard的运行缓存目录,启动时就能正常找到。
方法2:用Bazel参数预复制驱动文件
在CLion的Bazel运行配置中,添加启动参数:
--run_under="cp -L $(bazel cquery //modules/drivers/camera:camera_driver_lib --output=files) $(dirname $0)/ && "
这条命令会在mainboard启动前,把相机驱动的.so文件复制到它的运行目录下,确保加载路径有效。
方法3:修改DAG文件的绝对路径
先通过以下命令获取相机驱动.so的实际缓存路径:
bazel cquery //modules/drivers/camera:camera_driver_lib --output=files
然后把DAG文件里的library_path替换成这个绝对路径,mainboard就能直接定位到缓存中的.so文件。
方法4:调整CLion环境变量
在CLion的Bazel运行配置里,找到「Environment Variables」,添加:
LD_LIBRARY_PATH=$(bazel info bazel-bin)/modules/drivers/camera:$LD_LIBRARY_PATH
或者把「Working Directory」设置为相机驱动.so所在的Bazel缓存目录,让系统自动识别库文件路径。
内容的提问来源于stack exchange,提问作者Sam Hammamy
相关产品推荐
相关产品推荐

