三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Ubuntu 20.04安装配置CLion:搭建高效C/C++开发环境全攻略

Ubuntu 20.04安装配置CLion:搭建高效C/C++开发环境全攻略

1. 项目概述:为什么要在Ubuntu上安装CLion?

对于C和C++开发者来说,一个趁手的集成开发环境(IDE)是提升生产力的关键。在Windows和macOS上,选择很多,但在Linux发行版,特别是像Ubuntu 20.04 LTS这样长期支持、稳定且开发者友好的系统上,选择往往更偏向于专业和高效。CLion,作为JetBrains家族中专门为C和C++(也支持其他语言)打造的跨平台IDE,以其智能代码补全、强大的重构工具、集成的调试器和CMake支持,成为了许多专业开发者的首选。

你可能会问,Ubuntu不是自带GCC和GDB,用Vim或VSCode不也一样吗?对于小型项目或学习,确实可以。但当你面对一个包含数十个模块、依赖多个第三方库、构建系统复杂的中大型项目时,CLion提供的项目管理、代码导航和自动化重构能力,能让你把精力集中在逻辑实现上,而不是在终端里反复敲打构建命令和查找头文件路径。尤其是在Ubuntu 20.04这个服务器和开发环境都很普及的版本上,配置好CLion,意味着你获得了一个与生产环境高度一致的本地开发工作站。

这次安装,不仅仅是双击一个安装包那么简单。它涉及到如何为CLion准备一个健全的编译和调试环境,如何配置工具链,以及如何优化设置以适应Ubuntu的生态。整个过程,我会结合我多次在干净系统上配置的经验,把每一步的原理、可能遇到的坑以及最佳实践都讲清楚,目标是让你安装完就能立刻高效地投入开发。

2. 环境准备与依赖安装

在正式安装CLion之前,我们需要确保系统底层环境是完备的。CLion本身是一个Java应用(虽然用户感知不到),它更像一个强大的“指挥官”,实际的编译、构建、调试工作,需要依赖系统上的工具链(Toolchains)来完成。如果工具链没装好,CLion启动后很多核心功能会是灰色不可用状态。

2.1 更新系统与安装基础编译工具

首先,打开终端。一个好的习惯是在进行任何软件安装前,先更新本地软件包列表,并升级已有的软件包。这能确保我们从一个最新的基础开始,避免一些因旧版本库导致的依赖冲突。

sudo apt update sudo apt upgrade -y

接下来,安装最核心的构建工具包build-essential。这个元包包含了GCC编译器、G++编译器、make工具以及一些标准的C库头文件。这是C/C++开发的基石,没有它,后续一切无从谈起。

sudo apt install build-essential -y

安装完成后,可以通过命令gcc --versionmake --version来验证是否安装成功。看到版本号输出,就说明基础编译器就位了。

2.2 安装CMake与调试工具

CLion默认且深度集成的构建系统是CMake。虽然它也支持其他构建系统如Makefile、Gradle等,但CMake的支持是最无缝、功能最全的。Ubuntu 20.04的默认仓库提供了CMake,但版本可能不是最新的。对于大多数项目,仓库版本足够用。

sudo apt install cmake -y

同样,用cmake --version检查安装。接下来是调试器。CLion的图形化调试功能非常强大,但其底层依赖的是GDB(GNU Debugger)。我们必须安装它。

sudo apt install gdb -y

注意:在某些安全策略严格的系统上,直接使用GDB可能会受到限制(例如,需要特殊权限或进行一些配置)。对于一般开发环境,上述安装即可。如果后续调试时遇到权限问题,可能需要检查/proc/sys/kernel/yama/ptrace_scope的值,或使用sudo权限运行CLion(不推荐,有安全风险)。

2.3 安装可选但推荐的工具链

为了让开发环境更全能,我建议再安装以下工具,它们会在你处理不同项目时派上用场:

  1. Git:版本控制是开发现代软件的标配。CLion内置了Git集成。
    sudo apt install git -y
  2. Clang/LLVM:除了GCC,Clang也是一个优秀的编译器,有时在错误提示和静态分析上更友好。安装它能让CLion的工具链多一个选择。
    sudo apt install clang lldb -y
    lldb是LLVM项目下的调试器,可以作为GDB的替代。
  3. Ninja:一个专注于速度的小型构建系统。CMake可以生成Ninja构建文件,其构建速度通常比传统的Makefile更快。
    sudo apt install ninja-build -y

至此,系统的“肌肉”(工具链)已经准备就绪。接下来,我们来请“大脑”(CLion)登场。

3. 获取与安装CLion

JetBrains为Linux系统提供了两种主要分发格式:tar.gz压缩包和Snap包。我这里强烈推荐使用tar.gz包进行手动安装。原因有三点:第一,它不依赖于特定的包管理系统,干净独立;第二,更新和回滚更容易控制;第三,可以灵活地安装在任何目录,包括用户主目录,不需要sudo权限,更安全。

3.1 下载CLion

访问 JetBrains 的 CLion 官方下载页面。通常,你会看到两个版本:最新的正式版(Stable Release)和早期的预览版(EAP)。对于生产开发,请选择正式版。

在终端中,我们可以使用wget命令直接下载。假设我们下载的是当时最新的版本,链接可能会变,请以官网为准。以下命令仅为示例格式:

# 进入用户主目录下的“下载”文件夹 cd ~/Downloads # 使用wget下载,请替换URL为官网获取的实际链接 wget https://download.jetbrains.com/cpp/CLion-2023.3.4.tar.gz

如果你没有wget,可以用sudo apt install wget -y安装,或者直接通过浏览器下载图形界面。

3.2 解压与目录安置

下载完成后,是一个.tar.gz的压缩包。我们需要将其解压到一个合适的位置。一个常见的、符合Linux习惯的位置是/opt目录(用于存放第三方可选应用软件)或用户主目录下的~/apps~/jetbrains目录。为了不需要sudo权限,我们选择安装到用户目录。

# 创建目标目录(如果不存在) mkdir -p ~/apps # 解压压缩包到目标目录 tar -xzf CLion-*.tar.gz -C ~/apps/

解压后,~/apps/目录下会生成一个类似clion-2023.3.4的文件夹,这就是CLion的全部文件。

3.3 创建启动器与桌面快捷方式

为了让启动更方便,我们需要创建一个启动脚本并生成桌面图标。

首先,进入解压后的bin目录,你会发现一个名为clion.sh的Shell脚本。直接运行它就可以启动CLion。但每次都打开终端太麻烦。我们可以创建一个软链接到/usr/local/bin(该目录通常在用户的PATH环境变量中),这样在终端任何位置输入clion就能启动。

# 创建软链接,需要sudo权限,因为/usr/local/bin是系统目录 sudo ln -s ~/apps/clion-*/bin/clion.sh /usr/local/bin/clion

现在,在终端输入clion命令,应该就能启动CLion的初始配置向导了。

对于桌面图标,CLion贴心地提供了创建脚本。还是在bin目录下,运行:

# 这会在 ~/.local/share/applications 下创建 .desktop 文件 ./clion.sh

首次运行时,CLion会进行初始化设置,并询问你是否创建桌面条目。选择“是”。如果错过了,也可以在CLion完全启动后,通过菜单栏Tools->Create Desktop Entry...来创建。

实操心得:我更喜欢手动管理.desktop文件,因为可控性更高。你可以查看~/.local/share/applications/jetbrains-clion.desktop这个文件,确保其中的ExecIcon路径是正确的(Icon路径通常指向解压目录下的bin/clion.svg)。这样在Ubuntu的应用抽屉里就能看到CLion的图标了。

4. 首次运行与关键配置

第一次启动CLion,会经历一个配置向导。这个过程至关重要,它决定了你初始的开发体验。

4.1 导入设置与激活

启动后,CLion会询问你是否导入之前的设置。如果是全新安装,选择“Do not import settings”。接着是用户协议,接受即可。

然后是激活环节。如果你有JetBrains账户并购买了许可证,可以登录账户激活。对于学生和教师,可以申请免费的教育许可证。JetBrains也提供了30天的免费试用。请根据你的实际情况选择合法的方式激活。

4.2 配置主题与插件

激活后,会进入UI主题和键位映射选择。你可以选择喜欢的主题(如Darcula深色主题对眼睛更友好)和键位映射(如果你熟悉VS Code或Eclipse,可以选择对应方案,否则用默认的CLion方案即可)。

接下来是插件安装页面。CLion已经预装了C/C++开发的核心插件。我建议在初始阶段,除了默认的,只额外勾选一个“Markdown”插件,用于阅读和编写项目文档。其他插件如“Python”、“Docker”等,可以在后续需要时通过File->Settings->Plugins随时安装。保持IDE精简有助于加快启动和运行速度。

4.3 配置工具链(Toolchains)

这是最核心的一步。点击“Configure” -> “Settings”(或者直接按Ctrl+Alt+S)打开设置,找到Build, Execution, Deployment->Toolchains

CLion会自动检测系统已安装的工具。你应该能看到一个名为“Default”的工具链,其下包含了自动发现的C编译器(/usr/bin/gcc)、C++编译器(/usr/bin/g++)、调试器(/usr/bin/gdb)和CMake(/usr/bin/cmake)的路径。

关键检查点

  1. CMake版本:确认检测到的CMake版本与你之前安装的相符。CLion的某些高级特性可能需要较新版本的CMake支持。
  2. 调试器:确保GDB路径正确。如果之前安装了lldb,这里也可以添加一个额外的工具链,选择LLDB作为调试器,方便切换。
  3. 环境变量:通常不需要手动设置,但如果你的项目依赖某些自定义的环境变量(如LD_LIBRARY_PATH),可以在这里为整个工具链添加。

点击“OK”保存。至此,CLion已经知道如何调用你系统上的编译器、调试器和构建工具了。

5. 创建与配置第一个CMake项目

理论配置完成,让我们通过一个实际项目来验证一切是否正常。

5.1 新建项目与CMakeLists.txt解析

点击“New Project”,选择“C++ Executable”。在右侧,选择项目位置(例如~/Projects/my_first_clion_app),并选择语言标准(如C++17)。最关键的是“CMake options”,这里保持默认即可,它会在项目根目录生成一个CMakeLists.txt文件。

创建完成后,IDE会自动打开并加载这个项目。我们来看一下自动生成的CMakeLists.txt

cmake_minimum_required(VERSION 3.21) # 要求CMake的最低版本 project(my_first_clion_app) # 项目名称 set(CMAKE_CXX_STANDARD 17) # 设置C++语言标准为C++17 add_executable(my_first_clion_app main.cpp) # 添加一个可执行目标,源文件是main.cpp

这个文件是CMake的构建脚本。CLion会依据这个文件来理解你的项目结构、源文件以及如何构建它。当你修改这个文件后,CLion通常会自动重新加载CMake项目。

5.2 理解CLion中的构建配置

在IDE右上角,你会看到一个下拉菜单,默认可能是“Debug”。点击它旁边的小齿轮或直接点击下拉菜单,选择“Edit Configurations...”。

这里管理着不同的“运行/调试配置”。对于CMake项目,最重要的配置是顶部的“CMake Application”配置。你会看到:

  • Target:对应CMakeLists.txtadd_executable定义的目标(my_first_clion_app)。
  • Executable:构建后生成的可执行文件路径。
  • Configuration:构建类型,通常是DebugRelease
    • Debug:包含调试符号,关闭优化,便于调试。
    • Release:开启优化,去除调试信息,用于发布。
  • Build options:可以传递额外的参数给CMake,例如-j4来指定并行编译的线程数,大幅提升构建速度。

注意事项:很多新手会忽略构建类型。在开发阶段,务必使用Debug配置,这样你才能设置断点、查看变量值。只有在性能测试或交付时,才切换到Release配置进行构建。

5.3 构建、运行与调试

现在,打开自动生成的main.cpp,里面是一段简单的“Hello World”代码。点击右上角绿色的三角形“运行”按钮,或者按Shift+F10。CLion会依次执行以下操作:

  1. 根据当前配置(Debug)生成CMake构建文件(在项目目录下的cmake-build-debug文件夹中)。
  2. 调用Make/Ninja编译你的项目。
  3. 运行生成的可执行文件。

你会在IDE底部的“Run”工具窗口看到构建日志和程序输出“Hello, World!”。

要调试,只需在代码行号左侧点击设置断点(一个红点),然后点击绿色虫子图标“调试”按钮或按Shift+F9。程序会在断点处暂停,此时你可以使用下方的“Debug”工具窗口查看变量值、调用栈,并控制单步执行(F8)、步入函数(F7)等。

6. 高级配置与效率优化

基础功能跑通后,下面这些配置能让你用得更顺手,效率倍增。

6.1 配置自定义CMake选项

有些项目需要在CMake配置阶段传递特定变量。例如,你想启用项目的测试功能,可能需要定义-DBUILD_TESTS=ON。你可以在两个地方设置:

  1. 全局设置File->Settings->Build, Execution, Deployment->CMake。在“CMake options”字段中添加。这里设置的选项会对所有项目生效(不推荐,除非是通用选项)。
  2. 项目配置:在“Run/Debug Configurations”对话框中,选择你的CMake应用配置,在“CMake options”字段中添加。这是推荐的方式,因为它是项目特定的。

例如,如果你想使用Ninja作为生成器(而不是默认的Unix Makefiles),并且开启测试,可以这样设置CMake选项:

-G Ninja -DBUILD_TESTS=ON

6.2 配置头文件路径与代码补全

对于复杂的项目,经常需要引入第三方库。如果库安装在非标准路径(如/usr/local/include或自定义路径),你需要让CLion知道这些头文件的位置,否则代码补全和导航会失效。

方法是在CMakeLists.txt中使用include_directories()target_include_directories()命令。CLion会读取这些指令并建立索引。

# 将 /usr/local/include 和 ../mylib/include 添加到头文件搜索路径 include_directories(/usr/local/include ../mylib/include)

修改CMakeLists.txt后,CLion会提示你“Reload changes”,点击它或等待自动重载,索引就会更新。

6.3 使用远程开发功能(可选但强大)

这是CLion的一个杀手级功能。如果你的代码需要在远程服务器(如另一台Linux机器、WSL2,甚至Docker容器)上编译和运行,你可以在本地CLion中直接操作。

配置路径:File->Settings->Build, Execution, Deployment->Toolchains。点击“+”添加一个“Remote Host”工具链。

  • 你需要配置SSH连接(主机、端口、用户名、认证方式)。
  • CLion会自动在远程主机上部署一个后台进程,用于文件同步、构建和调试。

配置好后,在“Run/Debug Configurations”中,就可以选择使用远程工具链来构建和运行。代码在本地编辑,但编译、执行和调试完全在远程服务器上进行,完美匹配服务器开发环境。

6.4 常用快捷键与操作习惯

适应快捷键能极大提升效率。除了通用的Ctrl+C/V/X/S,记住这几个CLion特有的:

  • Ctrl+Shift+N:快速按文件名搜索并打开文件。
  • Ctrl+N:快速按类名搜索(对C++也适用,搜索类/结构体)。
  • Ctrl+B:跳转到声明或定义(在符号上使用)。
  • Ctrl+Alt+L:格式化代码。
  • Shift+F6:重命名(变量、函数、文件,安全重构)。
  • Ctrl+F12:查看当前文件的结构大纲。
  • 双击Shift:搜索一切(Search Everywhere)。

我个人的习惯是,将“运行”和“调试”的快捷键分别映射到F5F6,这样更符合肌肉记忆。可以在File->Settings->Keymap中自定义。

7. 常见问题与故障排除实录

即使按照步骤操作,也可能会遇到一些问题。这里记录了几个我踩过的坑和解决方案。

7.1 启动问题:无法找到Java运行时环境(JRE)

现象:运行./clion.shclion命令时,提示“No JDK found”或类似错误。原因:CLion需要JDK(Java Development Kit)来运行。虽然JetBrains的产品通常自带JRE,但有时链接会出错。解决

  1. 检查clion.sh脚本所在的bin目录,看是否存在jbr或类似名称的文件夹,那是JetBrains自带的运行时。
  2. 如果没有,或者脚本找不到,可以手动安装OpenJDK:
    sudo apt install openjdk-11-jdk -y
  3. 然后,编辑clion.sh脚本(或创建一个启动包装脚本),在开头设置JDK_HOME环境变量指向你的JDK安装路径,例如export JDK_HOME=/usr/lib/jvm/java-11-openjdk-amd64

7.2 编译问题:CMake报错“Could NOT find xxx”

现象:加载项目或构建时,CMake在输出窗口报错找不到某个包,例如Could NOT find Threads (missing: Threads_FOUND)原因:项目依赖的库未在系统中安装。解决:根据错误信息安装对应的开发包。包名通常是libxxx-dev。例如,对于线程库,它实际上是系统核心库的一部分,通常不会缺失。但如果遇到其他库,如OpenCV:bash sudo apt install libopencv-dev -y安装后,CLion可能需要手动触发CMake重新加载(点击CMake工具窗口的“重新加载”按钮)。

7.3 调试问题:GDB无法附加进程或权限不足

现象:启动调试时,提示“ptrace: Operation not permitted”或调试器启动后立即退出。原因:Linux系统的ptrace安全限制。解决

  1. 临时解决(每次启动前执行):
    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
  2. 永久解决(修改系统配置):
    # 编辑sysctl配置文件 sudo nano /etc/sysctl.d/10-ptrace.conf # 添加或修改以下行 kernel.yama.ptrace_scope = 0 # 保存退出,然后应用配置 sudo sysctl -p /etc/sysctl.d/10-ptrace.conf

    警告:将ptrace_scope设置为0会降低系统安全性,因为它允许任何进程调试其他同级权限的进程。请仅在可信的开发环境中使用。

7.4 性能问题:IDE卡顿或索引缓慢

现象:CLion打开大型项目后响应变慢,风扇狂转。原因:CLion正在为项目建立代码索引,这是一个CPU和I/O密集型操作。解决

  1. 增加内存:编辑CLion的VM选项文件。找到安装目录下的bin/clion.vmoptions(或clion64.vmoptions),调整-Xmx参数(最大堆内存)。例如,从-Xmx750m改为-Xmx2048m(2GB)或更高,取决于你的物理内存大小。
  2. 排除目录:将不需要索引的目录(如构建目录cmake-build-*、第三方库源码、大量文档等)标记为“Excluded”。在项目视图中右键点击该目录 -> “Mark Directory as” -> “Excluded”。CLion将不会索引这些目录,大幅提升速度。
  3. 使用“Power Save Mode”:在菜单栏File->Power Save Mode。开启后会禁用代码检查、后台更新等耗电功能,在只需要查看代码时非常有用。

7.5 字体渲染问题:界面或编辑器字体模糊

现象:在Ubuntu上,特别是使用Wayland显示服务器时,CLion界面字体可能发虚。原因:Java Swing GUI在Linux下的字体渲染问题。解决

  1. 修改CLion的启动脚本,添加抗锯齿和字体渲染参数。编辑clion.sh,在靠近末尾的exec命令前添加:
    export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dsun.java2d.xrender=true'
  2. 或者在CLion内部,Help->Edit Custom VM Options...,在打开的文件末尾添加:
    -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dsun.java2d.xrender=true
    重启CLion生效。

安装和配置CLion的过程,本质上是在搭建一个高度定制化的C/C++开发工作流。从系统工具链的夯实,到IDE本身的部署,再到项目级别的精细调优,每一步都影响着最终的开发体验。在Ubuntu 20.04这样一个稳定平台上完成这套配置,获得的将是一个可靠、高效且专业的开发基地,足以应对从学习到生产的各种编码挑战。记住,IDE是工具,熟练运用它,让它贴合你的习惯,才是提升生产力的关键。

← 返回列表