CMake Error at darknet_ros_lib_generated_maxpool_layer_kernels.cu.o.cmake 编译darknet_ros

本文解决在构建ROS项目中遇到的CUDA与C++11标准冲突问题,通过调整编译设置避免了'std'重定义错误,确保CUDA内核编译正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错:

[ 42%] Built target darknet_ros_msgs_generate_messages
[ 43%] Building NVCC (Device) object darknet_ros/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_col2im_kernels.cu.o
nvcc fatal   : redefinition of argument 'std'
nvcc fatal   : redefinition of argument 'std'
CMake Error at darknet_ros_lib_generated_crop_layer_kernels.cu.o.cmake:207 (message):
  Error generating
  /home/a/catkin_ws/build/darknet_ros/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_crop_layer_kernels.cu.o


nvcc fatal   : redefinition of argument 'std'
CMake Error at darknet_ros_lib_generated_dropout_layer_kernels.cu.o.cmake:207 (message):
  Error generating
  /home/a/catkin_ws/build/darknet_ros/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_dropout_layer_kernels.cu.o

解决:

参考:https://github.com/ComputationalRadiationPhysics/alpaka/issues/186

删除cuda相关部分-std=c++11设置,给cuda更多选择。

 

### 解析 CMake 构建 `darknet_ros` 时无法找到源文件的解决方案 当遇到 `CMake Error at ... add_library cannot find source file` 错误时,通常意味着指定路径下的源文件不存在或者路径设置不正确。对于 `DARKNET_PATH-NOTFOUND/src/activation_layer.c` 文件未找到的情况,可以考虑以下几个方面来解决问题。 #### 验证环境变量配置 确保 `DARKNET_PATH` 环境变量已正确定义,并指向正确的 Darknet 安装目录。如果此变量未定义或指向错误位置,则可能导致 CMake 无法定位所需的源代码文件[^1]。 #### 更新项目依赖关系 有时克隆仓库后可能缺少必要的子模块或其他资源,这可能会引起编译失败。建议按照官方指南重新拉取最新版本的代码库,并初始化所有Git 子模块: ```bash git submodule update --init --recursive ``` 此外,在某些情况下,使用特定分支或标签也可能有助于避开潜在的问题版本[^2]。 #### 调整 CUDA 版本兼容性 考虑到部分错误可能是由于 GPU 或者 CUDA 设置不当引起的,确认当前系统的 CUDA 和 cuDNN 版本是否满足 `darknet_ros` 的最低需求。过高的硬件规格反而会引发不必要的麻烦;适当降低目标架构或许能绕过一些棘手问题[^3]。 #### 修改 CMakeLists.txt 中的路径设定 仔细检查项目的 `CMakeLists.txt` 文件,特别是那些涉及外部库导入的部分。如果有硬编码式的绝对路径存在,尝试将其替换为相对路径或是通过宏定义的方式动态获取实际路径[^5]。 #### 参考成功案例分享的经验 网络上已有不少开发者遇到了相似的问题并找到了各自的解决方法。查阅相关论坛帖子和技术博客中的讨论记录往往能够提供额外的帮助和启发[^4]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值