首页 > 解决方案 > 使用 FreeBSD 作为远程主机的 CLion 完全远程模式

问题描述

目前,CLion 的Full Remote Mode仅支持 Linux 作为远程主机操作系统。是否有可能拥有 FreeBSD 远程主机?

标签: c++cremote-debuggingfreebsdclion

解决方案


是的你可以!

但是,请注意,我正在回顾这些步骤,所以我可能错过了一两步。如果您遇到任何问题,请随时在下面发表评论。

  1. 租一台 FreeBSD 服务器,当然 :)

  2. 将您的系统更新到最新版本。否则,您可能会遇到奇怪的错误,例如"libdl.so.1" not found安装软件包时。我正在使用的是 FreeBSD 12.0-RELEASE-p3。

  3. 创建一个用户帐户。不要忘记使其成为 的成员wheel,并取消注释 中的%wheel ALL=(ALL) ALL/usr/local/etc/sudoers

  4. 设置 SSH。这一步特别棘手,因为我们需要同时使用公钥和密码身份验证。

    1. 由于一个已知的错误,在某些情况下,远程主机必须使用密码验证,否则在设置工具链时会出错。PasswordAuthentication yes您可以通过设置in/etc/ssh/sshd_config后跟一个.来启用密码验证sudo /etc/rc.d/sshd restart
    2. CLion 似乎使用rsyncSSH 在本地和远程主机之间同步文件。由于某些我无法解释的原因,如果主机服务器不支持无密码 SSH 密钥登录,此过程将永远挂起。按照此答案创建 SSH 密钥作为另一种身份验证方式。
  5. CLion 假定远程主机操作系统是 Linux,因此我们必须修复 GNU/Linux 和 FreeBSD 之间的一些不兼容问题。

    1. 使用sudo pkg install coreutils.
    2. 将 BSD 实用程序重命名statsudo mv /usr/bin/stat /usr/bin/_stat.
    3. 使用Snippet 1/usr/bin/stat中的内容创建一个“新”文件。这个黑客利用了 CLion在远程服务器上运行命令之前将环境变量设置为的事实。JETBRAINS_REMOTE_RUN1
    4. sudo chmod a+x /usr/bin/stat使它可执行。
    5. 同样,将 BSD 实用程序重命名lssudo mv /bin/ls /bin/_ls.
    6. 像以前一样,使用Snippet 2/bin/ls中的内容创建一个“新”文件。
    7. 最后,sudo chmod a+x /bin/ls.
  6. 使用sudo pkg install rsync cmake gcc gdb gmake.

  7. 现在您可以按照官方说明,连接到闪亮的 FreeBSD 主机了!

在此处输入图像描述


片段 1

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/usr/bin/_stat" "$@"
else
        exec "/usr/local/bin/gnustat" "$@"
fi

片段 2

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/bin/_ls" "$@"
else
        exec "/usr/local/bin/gls" "$@"
fi

推荐阅读