# 远程环境构建
本节将从一台没有任何开发环境的纯净 Ubuntu 开始配置开发远程开发 C/C++ 的开发环境,读者可以根据自己的实际情况自由选择从何处开始。
# 配置 C/C++ 环境
首先更新系统,保证后续安装的软件都是最新的:
sudo apt update | |
sudo apt upgrade |
然后就是安装开发 C/C++ 的必要工具:
sudo apt install build-essential gdb cmake |
可以通过以下命令查看各个工具的版本:
❯ gcc --version | |
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 | |
Copyright (C) 2019 Free Software Foundation, Inc. | |
This is free software; see the source for copying conditions. There is NO | |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
❯ g++ --version | |
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 | |
Copyright (C) 2019 Free Software Foundation, Inc. | |
This is free software; see the source for copying conditions. There is NO | |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
❯ make --version | |
GNU Make 4.2.1 | |
Built for x86_64-pc-linux-gnu | |
Copyright (C) 1988-2016 Free Software Foundation, Inc. | |
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> | |
This is free software: you are free to change and redistribute it. | |
There is NO WARRANTY, to the extent permitted by law. | |
❯ gdb --version | |
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 | |
Copyright (C) 2020 Free Software Foundation, Inc. | |
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> | |
This is free software: you are free to change and redistribute it. | |
There is NO WARRANTY, to the extent permitted by law. | |
❯ cmake --version | |
cmake version 3.16.3 | |
CMake suite maintained and supported by Kitware (kitware.com/cmake). |
如果想使用 LLVM+Clang
作为构建工具也可以(以 llvm-12 为例):
sudo apt install llvm-12 clang-12 lldb-12 | |
# 默认使用 12 版本的 llvm | |
sudo update-alternatives --install /usr/bin/llvm llvm /usr/bin/llvm-12 100 # 这行可能会失败 | |
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 100 | |
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-12 100 | |
sudo update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-12 100 |
# 配置 CLion Remote Client
按如下步骤操作,如果在远程主机上的下载过程没有问题,那么在下载完成后 CLion 将自动打开在第四步中指定的目录,如果没有打开,也可以通过第一步的页面打开。
Jetbrains 的 EAP(抢先体验计划,Early Access Program)版本是一个可以免费使用且功能无阉割的抢先试用版本,可能会有些不稳定且需要每 30 天重装一次,有条件的话可以在第四步中选择 RC(Remote Client)版本安装。
# 配置 CMake
Settings -> Build, Execution, Deployment -> Toolchains
先删掉默认配置,然后新增一个 Remote Host
的配置:
如果按照前面的步骤装好了 CMake 等工具,此处应该可以直接识别出各种工具的版本,如上图所示。然后配置 CMake 环境即可:
重新打开远程环境,此时 CLion 就可以正确识别 CMake 项目并正常编译 & 调试了
# Troubleshooting
# 1. 远程环境下载 CLion Client 卡住 / 下载缓慢
由于下载站是 Jetbrains 官方站,国本部分时间网络环境可能不太好,导致下载进度缓慢或下载失败,可以按如下步骤操作:
登入远程主机,在用户家目录下
cat wget-log
在日志中找到实际的下载地址:https://download.jetbrains.com/cpp/CLion-241.14494.229.tar.gz
本地下载后通过下面操作上传到云主机中:
# 2. 无法识别 CMake 项目
未配置到 Toolchains 导致的,参考配置 CMake
# 3. CMake 版本不匹配
默认安装的 CMake
版本比较低,如果项目的 CMake 的最低版本要求比价高的话需要手动升级 CMake:
- 在官网下载所需版本的 CMake:cmake-3.27.6-linux-x86_64.tar.gz
- 上传到云主机中并解压:
tar zxvf cmake-3.27.6-linux-x86_64.tar.gz
sudo mv cmake-3.27.6-linux-x86_64 /opt/cmake-3.27.6
sudo ln -sf /opt/cmake-3.27.6/bin/* /usr/bin/
- 使用
cmake --version
测试版本是否成功更新
# 4. 找不到 llvm-12
如果 sudo update-alternatives --install /usr/bin/llvm llvm /usr/bin/llvm-12 100
失败,是因为这样下载的 ``llvm 没有提供一个统一的管理入口,各个
llvm` 工具是分开安装的,可以通过下述命令列出所有工具:
ls /usr/bin/llvm*12 |
如果不需要用到 llvm-as
这类工具的话可以不用管他,如果需要用到的话,则需要单独为这些工具设置 update-alternatives
,例如:
sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-12 100 | |
sudo update-alternatives --install /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-12 100 | |
... | |
# 依此类推,添加所有你需要的工具 |
# 5. 调试时无效断点问题
如果发现调试时断点无法断下来,可以尝试更换成 ToolChain: