CLion Remote Debug CrossCompile

news2024/11/17 23:43:16

CLion远程Docker调试ROS(交叉编译)的设置步骤

  1. 准备一个好用的docker,运行起来(Docker Image一定可以跑cuda和图形界面的,否则启动不了CLion,可以不用浪费时间看本教程了)

  2. 在docker镜像中配置好ssh和rsync,我的 /etc/ssh/sshd_config 配置是:

Port 2222
PasswordAuthentication yes
PermitEmptyPasswords no
PermitRootLogin yes
UsePAM no
Subsystem sftp internal-sftp
Match Group remote_user
    ChrootDirectory /
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

启动镜像后,建议重新启动ssh和rsync,否则比较容易出错,有好的建议可以评论交流哈~

service ssh restart
service rsync restart
  1. 先用CLion 在docker里面 下载CLion EAP,如图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    下载好之后,点进去,会弹出权限不够, Read-Only问题,容易卡在这里,推不下去。

之所以要推,是因为需要用ROS1生成的CMakeLists.txt文件,而该文件是一个软链接,不是实际的文件,本地Local CLion环境无法Load,显示

CMakeLists.txt not found in /home/shanph/Documents/ros1_ws/cross_ws/src Select CMakeLists.txt

[Failed to reload]

而docker已经安装好ROS和交叉编译环境,所以需要docker里面的环境来启动之后可以用CLion编译和调试,但是配置了CLion的Tools里面development,无数次重置SFTP和Resync都不行之后,只能另辟蹊径了,网上的资料也很少。

解决办法

  1. 找到上述步骤3中下载的CLion EAP在docker中的存放位置,一般是/home/<user_name>文件夹下的.cache文件夹,比如我就是:
/home/remote_user/.cache/JetBrains/RemoteDev/dist/f8ec2e0a71d00_CLion-231.7665.29/bin
  1. 进入该文件夹,直接在Docker Terminal中启动./clion.sh,注意不要在PC上操作,而且Docker需要支持图形界面显示,否则无法启动

  2. 启动之后打开Project,设置好cmake选项就可以Enjoy your self了,具体配置贴一下,需要用env.sh来配置CLion环境才可以直接用IDE编译和调试ROS程序。

CMAKE_PREFIX_PATH=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/usr:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/opt/ros/indigo/;LD_LIBRARY_PATH=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/lib:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/usr/lib:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/opt/ros/indigo/lib;PKG_CONFIG_PATH=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/usr/lib/pkgconfig:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/opt/ros/indigo/lib/pkgconfig;PYTHONPATH=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/usr/lib/python2.7/site-packages:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/aarch64-rockchip-linux-gnu/sysroot/opt/ros/indigo/lib/python2.7/site-packages:/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/lib/python2.7/site-packages;ROS_DISTRO=indigo;RosToolchainRoot=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host;PATH=/home1/heweihong/workspace/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/bin:/home1/heweihong/workspace/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/opt/ros/indigo/bin:/home/shanph/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binv
-DCMAKE_TOOLCHAIN_FILE=/workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/RosToolchain.cmake
source /workspace/hewh10/robot/rk3566/buildroot/output/rockchip_rk3566_midea/host/RosToolchainSetup.bash && catkin_make -j24 -DCMAKE_TOOLCHAIN_FILE=$ROS_CMAKE_TOOLCHAIN_FILE 2>&1 | tee log.txt
  1. Tips

在Docker Terminal编译过程中产生的文件如果直接用CLion编辑会提示权限不够,需要在Docker Terminal中对文件进行赋权操作。

chown -R root file_name

错误的赋权会导致CLion编译出错,所以要比较精确的进行赋权。

  1. DONE。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化第二版-03部分-06章-比较与排序

文章目录数据可视化第二版-03部分-06章-比较与排序总结可视化视角-比较与排序代码实现创建虚拟环境1. python版本管理2.切换到指定版本后安装虚拟环境切换路径到文件当前路径柱形图环形柱状图子弹图哑铃图雷达图词云图教材截图数据可视化第二版-03部分-06章-比较与排序 总结 …

18- TensorFlow模型中Keras进阶 (TensorFlow系列) (深度学习)

知识要点 导入数据: (x_train, y_train), (x_test, y_test) mnist.load_data()标准化处理: x_train_scaled scaler.fit_transform(x_train) # scaler StandardScaler()one-hot编码: y_train tf.keras.utils.to_categorical(y_train, 10) 定义神经网络: model t…

《数据库系统概论》学习笔记——第四章 数据库安全

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 这一章简单记一下那几条sql的用法和两种存取控制和审计&#xff08;今年期末考了&#xff09;吧&#xff0c;不知道有啥好考的 数据库安全性 问题的提出 数据库的一大特点是数据可以共享数据共享必然带来数据库的安全…

算法练习(八)计数质数(素数)

1、问题描述&#xff1a; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 2、示例如下&#xff1a; 3、代码如下&#xff1a; 第一种&#xff1a;比较暴力的算法 class Solution {public int countPrimes(int n) {int count1;if(n<2) return 0;for(in…

【数据结构必会基础】关于树,你所必须知道的亿些概念

目录 1.什么是树 1.1浅显的理解树 1.2 数据结构中树的概念 2.树的各种结构概念 2.1 节点的度 2.2 根节点/叶节点/分支节点 2.3 父节点/子节点 2.4祖先节点/子孙节点 2.5兄弟节点 2.6树的度 2.7节点的层次 2.8森林 3. 如何用代码表示一棵树 3.1链式结构 3.1.1 树节…

01-mybatis-快速入门、代理、CRUD练习

文章目录MybatisMybatis入门案例1、创建User表&#xff0c;添加数据2、创建模块&#xff0c;搭建框架2.1 创建模块注意&#xff1a;完善项目目录2.2 导入坐标2.3 编写 MyBatis 核心配置文件2.4 编写sql映射文件2.5 编码3、解决SQL映射文件的警告提示Mapper代理开发1、定义同名接…

python下如何安装并使用matplotlib(画图模块)

在搜索命令中输入cmd&#xff0c;以管理员身份运行。 输入以下命令&#xff0c;先对pip安装工具进行升级 pip install --upgrade pip 升级完成 之后使用pip安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 也可以使用pycharm来安装matp…

《嵌入式应用开发》实验一、开发环境搭建与布局(上)

1. 搭建开发环境 去官网&#xff08;https://developer.android.google.cn/studio&#xff09;下载 Android Studio。 安装SDK&#xff08;默认Android 7.0即可&#xff09; 全局 gradle 镜像配置 在用户主目录下的 .gradle 文件夹下面新建文件 init.gradle&#xff0c;内容为…

弹性盒子布局

目录一、弹性盒子属性二、认识flex的坐标轴三、简单学习父级盒子属性三、属性说明3.1、flex-grow一、弹性盒子属性 说明&#xff1a; div的默认样式&#xff1a;display:block 块盒子 display:flex弹性盒子&#xff08;可以控制下级盒子的位置&#xff09; 当两种盒子单独出现…

springboot 虚拟线程demo

jd19支持虚拟线程&#xff0c;虚拟线程是轻量级的线程&#xff0c;它们不与操作系统线程绑定&#xff0c;而是由 JVM 来管理。它们适用于“每个请求一个线程”的编程风格&#xff0c;同时没有操作系统线程的限制。我们能够创建数以百万计的虚拟线程而不会影响吞吐。 做个 spri…

实验心理学笔记01:引论

原视频链接&#xff1a; https://www.bilibili.com/video/BV1Qt41137Kv 目录 一、实验心理学&#xff1a;定义、内容及简要历史回顾 二、实验心理学和普通心理学、认知心理学的区别 三、实验方法与非实验方法 四、实验范式 五、实验中的各种变量 六、The science of psy…

Java项目---博客系统

博客系统url : 链接 项目已上传gitee : 链接 前言 之前笔者已经使用Servlet结合MySQL实现了第一版的个人博客。在这一版的博客系统中&#xff0c;将进行以下功能的升级&#xff1a; 框架升级&#xff1a;SSM版本&#xff0c;即&#xff08;Spring SpringMVC MyBatis&…

@Import注解的原理

此注解是springboot自动注入的关键注解&#xff0c;所以拿出来单独分析一下。 启动类的run方法跟进去最终找到refresh方法&#xff1b; 这里直接看这个org.springframework.context.support.AbstractApplicationContext#refresh方法即可&#xff0c;它下面有一个方法 invoke…

Linux基础命令-fdisk管理磁盘分区表

文章目录 fdisk 命令介绍 命令格式 基本参数 1&#xff09;常用参数 2&#xff09;fdisk菜单操作说明 创建一个磁盘分区 1&#xff09;创建分区 2&#xff09;创建交换分区 参考实例 1&#xff09; 显示当前分区的信息 2&#xff09; 显示每个磁盘的分区信息 命令…

关于单目标约束优化问题的讲解及实现过程

一、前沿 优化问题一直是工程领域、路径规划领域等绕不开的话题,而真正的实际问题不是只是单目标优化问题,而是涉及到高维度且带多约束的问题,其中约束包含等式约束、不等式约束或者二者都有,这给优化研究提高了难度。 在中学的时候,应该都遇到过线性规划问题,类似于如…

LeetCode 热题 C++ 200. 岛屿数量 206. 反转链表 207. 课程表 208. 实现 Trie (前缀树)

LeetCode200 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设…

虹科新闻|虹科与iX systems正式建立合作伙伴关系

近日&#xff0c;虹科与美国iXsystems公司达成战略合作&#xff0c;虹科正式成为iXsystems公司在中国区域的认证授权代理商。未来&#xff0c;虹科将携手iXsystems&#xff0c;共同致力于提供企业级存储解决方案。虹科及iXsystems双方的高层领导人员都对彼此的合作有很大的信心…

【JVM】垃圾回收

6、垃圾回收机制 6.1、对象成为垃圾的判断依据 在堆空间和元空间中&#xff0c;GC这条守护线程会对这些空间开展垃圾回收⼯作&#xff0c;那么GC如何判断这些空间的对象是否是垃圾&#xff0c;有两种算法&#xff1a; 引用计数法&#xff1a; 对象被引用&#xff0c;则计数…

搜广推 NeuralCF - 改进协同过滤+矩阵分解的思想

😄 NeuralCF:2017新加坡国立大学提出。【后文简称NCF】 😄 PNN:2016年上海交通大学提出。 文章目录 NeuralCF动机原理general NCFNCF终极版(GMF+MLP的结合)缺点优点ReferenceNeuralCF 动机 前面学了MF,可知MF在用户-物品评分矩阵的基础上做矩阵分解(用户矩阵Q和物品…

Codeforces Round #851 (Div. 2)(A~D)

A. One and Two给出一个数组&#xff0c;该数组仅由1和2组成&#xff0c;问是否有最小的k使得k位置的前缀积和后缀积相等。思路&#xff1a;计算2个数的前缀和即可&#xff0c;遍历判断。AC Code&#xff1a;#include <bits/stdc.h>typedef long long ll; const int N 1…