2024-09-20
C/C++
00

目录

WSL+Clion的环境配置与开发实战
准备工作
启用 Windows 10 中的 WSL 功能
安装 WSL2
WSL 常用指令
检查 WSL 版本
配置 WSL2 基础环境
WSL 无法联网,联网失败
搭建 C++ 开发环境
安装 CMake
安装其他依赖
Conan 包管理工具
CLion 编译工具链检查
编译 CMake 工程
Clion使用
Android交叉编译
Conan 常用指令
1. Conan 的核心功能
2. Conan 工作流程
3. 常用指令详解
结语

WSL+Clion的环境配置与开发实战

随着开发环境需求的不断增加,Windows Subsystem for Linux 2(简称 WSL2)为开发者提供了在 Windows 系统上运行 Linux 发行版的强大工具。本文将详细介绍如何在 Windows 10 上安装和配置 WSL2,并搭建一个完整的 C++ 开发环境。

准备工作

在开始安装和配置 WSL2 之前,建议先准备以下资源和工具:

这些资源将帮助您更好地理解和使用 WSL2。


启用 Windows 10 中的 WSL 功能

  1. 打开 Windows 功能设置

    • 进入 控制面板
    • 选择 程序
    • 点击 启用或关闭 Windows 功能
  2. 启用适用于 Linux 的 Windows 子系统

    • 在弹出的窗口中,勾选 适用于 Linux 的 Windows 子系统

      注意:WSL2 与 VMWare 不兼容,两者只能选其一。WSL2 需要启用 Hyper-V,而 VMWare 不支持 Hyper-V。若需同时使用,建议选择 WSL1。

  3. 启用虚拟机平台

    • 在同一窗口中,勾选 虚拟机平台。这是 WSL2 所需的功能。
  4. 重启计算机

    • 勾选后,点击 确定,系统会提示重启计算机以应用更改。

    启用 WSL 功能


安装 WSL2

  1. 打开管理员权限的 PowerShell

    • 右键点击 开始菜单,选择 Windows PowerShell(管理员)
  2. 查看可用的 Linux 发行版

    powershell
    wsl --list --online

    或者使用简化命令:

    powershell
    wsl -l -o
  3. 安装 WSL2

    执行以下命令安装默认的 Ubuntu 22:

    powershell
    wsl --install

    安装完成后,系统会提示重启计算机。

    安装 WSL2

  4. 重启计算机

    重启后,WSL2 将自动完成安装并初始化 Ubuntu 发行版。


WSL 常用指令

以下是一些常用的 Windows Subsystem for Linux(WSL)指令及其用途说明,帮助您更高效地管理和使用 WSL 环境:

  1. 查看在线可用的 Linux 发行版

    bash
    wsl --list --online

    或者:

    bash
    wsl -l -o

    用于列出可以安装的 Linux 发行版。

  2. 安装指定的 Linux 发行版

    bash
    wsl --install -d <发行版名称>

    例如安装 Ubuntu:

    bash
    wsl --install -d Ubuntu

    若未指定 -d,默认安装 Ubuntu。

  3. 查看已安装的 Linux 发行版

    bash
    wsl --list --verbose

    或者:

    bash
    wsl -l -v

    显示所有已安装的 Linux 发行版及其状态(默认、正在运行等)。

  4. 设置默认 Linux 发行版

    bash
    wsl --set-default <发行版名称>

    例如将 Ubuntu 设为默认:

    bash
    wsl --set-default Ubuntu
  5. 启动特定的 Linux 发行版

    bash
    wsl -d <发行版名称>

    例如启动 Ubuntu:

    bash
    wsl -d Ubuntu
  6. 关闭所有正在运行的 WSL 实例

    bash
    wsl --shutdown

    用于强制关闭所有运行的 WSL 实例。

  7. 更改 WSL 版本(WSL1 或 WSL2)

    bash
    wsl --set-version <发行版名称> <版本号>

    例如,将 Ubuntu 切换到 WSL2:

    bash
    wsl --set-version Ubuntu 2
  8. 导出 WSL 发行版

    bash
    wsl --export <发行版名称> <文件路径>

    例如导出 Ubuntu:

    bash
    wsl --export Ubuntu D:\wsl-backups\ubuntu-backup.tar
  9. 导入 WSL 发行版

    bash
    wsl --import <发行版名称> <安装路径> <备份文件路径>

    例如从备份导入 Ubuntu:

    bash
    wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backups\ubuntu-backup.tar
  10. 查看 WSL 版本

    bash
    wsl --version

    显示当前 WSL 的版本信息。

  11. 更新 WSL

    bash
    wsl --update

    用于更新 WSL 到最新版本,确保获得最新的功能和修复。

  12. 设置 WSL 启动时的默认用户

    bash
    wsl --set-default-user <用户名>

    例如,将默认用户设置为 xiedong

    bash
    wsl --set-default-user xiedong

通过掌握这些指令,您可以更灵活地管理 WSL 环境,提升开发效率。


检查 WSL 版本

安装完成后,可以通过以下步骤检查当前 WSL 的版本:

  1. 下载并安装 Windows Terminal

  2. 查看 WSL 版本

    在终端中运行以下命令:

    bash
    wsl --version

    示例输出:

    bash
    PS C:\Users\Administrator> wsl --version WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.26091.1-240325-1447.ge-release Windows 版本: 10.0.19045.2965

    或者使用简化命令:

    bash
    wsl.exe -l -v

    示例输出:

    bash
    PS C:\Users\Administrator> wsl.exe -l -v NAME STATE VERSION * Ubuntu Running 2
  3. 升级到 WSL2(如果尚未)

    若发现当前版本不是 WSL2,可以通过以下命令进行升级:

    bash
    wsl --set-version Ubuntu-22.04 2

    注意:请将 Ubuntu-22.04 替换为您实际安装的发行版名称。


配置 WSL2 基础环境

为了确保 WSL2 环境的稳定和安全,建议进行以下基础配置:

  1. 更新软件包列表并升级现有包

    bash
    sudo apt update && sudo apt upgrade -y
  2. 安装常用工具

    安装基础开发工具和依赖库,以便后续开发使用:

    bash
    sudo apt install build-essential curl wget git -y

WSL 无法联网,联网失败

在某些情况下,WSL 可能会遇到联网问题,导致无法访问互联网。以下是解决 WSL 联网失败的有效方法:

  1. 参考解决方案

  2. 安装并运行 wsl-vpnkit

    执行以下命令创建一个网络供 WSL 使用:

    bash
    e: wsl --import wsl-vpnkit $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz --version 2 wsl -d wsl-vpnkit --cd /app wsl-vpnkit

    说明:上述命令将导入 wsl-vpnkit 发行版并运行,从而为 WSL 创建一个稳定的网络连接。

  3. 保持终端运行

    每次遇到网络问题时,需运行以下命令:

    bash
    wsl -d wsl-vpnkit --cd /app wsl-vpnkit

    提示:请勿关闭该终端窗口,以确保网络连接持续有效。

    解决 WSL 联网问题


搭建 C++ 开发环境

为了在 WSL2 中进行 C++ 开发,需要安装一系列开发工具和依赖库。以下是详细的安装步骤:

安装 CMake

  1. 下载 CMake

    bash
    cd ~ wget https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.tar.gz
  2. 解压并安装 CMake

    bash
    tar -xzvf cmake-3.30.3-linux-x86_64.tar.gz sudo ln -sf $(pwd)/cmake-3.30.3-linux-x86_64/bin/* /usr/bin/
  3. 验证安装

    bash
    cmake --version

    示例输出:

    bash
    cmake version 3.30.3 CMake suite maintained and supported by Kitware (kitware.com/cmake).

安装 GCC++

  1. 添加 GCC 仓库(针对 Ubuntu 版本 < 18.04)

    bash
    sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update
  2. 安装 GCC 和 G++

    bash
    sudo apt-get install gcc -y sudo apt-get install g++ -y
  3. 验证安装

    bash
    gcc --version

    示例输出:

    bash
    gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 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.
    bash
    g++ --version

    示例输出:

    bash
    g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 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.

安装 GDB

  1. 安装 GDB

    bash
    sudo apt install gdb -y
  2. 验证安装

    bash
    gdb --version

    示例输出:

    bash
    GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1 Copyright (C) 2022 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.

安装其他依赖

为了避免在编译过程中出现缺失依赖的错误,建议安装以下必要的库和工具:

bash
sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libopenexr-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev -y

Conan 包管理工具

Conan 是一个开源的 C/C++ 包管理器,能够简化依赖管理和构建过程。以下是安装 Conan 的步骤:

  1. 安装 Miniconda

    bash
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh

    按照提示完成安装后,加载 Conda 环境:

    bash
    . ~/.bashrc
  2. 创建 Python 3.7 环境

    bash
    conda create -n py37 python=3.7 -y
  3. 激活 Python 环境

    bash
    conda activate py37
  4. 安装 Conan

    bash
    pip3 install conan==1.60

    注意:确保使用的是 Conan 1.x 版本,以避免与某些项目的不兼容问题。


CLion 编译工具链检查

为了确保 CLion 能够正确识别和使用 WSL2 中的工具链,请按照以下步骤进行检查:

  1. 打开 CLion 并配置工具链

    • 启动 CLion。
    • 进入 File > Settings > Build, Execution, Deployment > Toolchains
    • 点击 + 添加新的 WSL 工具链。
  2. 验证工具链状态

    确保所有工具链组件(如 CMake、GCC、GDB 等)状态均为 ✔,表示配置正确。

    CLion 工具链检查

    置顶WSL的工具链:

    image.png


编译 CMake 工程

在完成开发环境的配置后,可以开始编译 CMake 工程。以下是详细步骤:

  1. 清理之前的编译文件

    删除旧的编译文件,以确保干净的构建环境,如下图,删除类似这样的老的编译文件:

    image.png

  2. 进入工程的编译目录

    bash
    cd /mnt/e/workcode/cpp_project/layout_analysis_infer/04compile
  3. 激活 Python 环境

    bash
    conda activate py37
  4. 执行编译脚本

    修改一下gcc_linux64.conan文件里gcc的版本,我默认安装的gcc版本是11,所以修改版本为11:

    bash
    [settings] os=Linux os_build=Linux arch=x86_64 arch_build=x86_64 compiler=gcc compiler.version=11 compiler.libcxx=libstdc++11 build_type=Release [options] [build_requires] [env]

    执行编译:

    bash
    bash start_compile_linux64_with_gcc.sh release

    脚本将自动进行代码编译和构建,完成后即可在 CLion 中进行调试和运行。

    编译过程中会下载外网的一些东西,要么软路由,要么开局域网魔法,比如宿主机器上的:

    bash
    export http_proxy=101.100.81.102:10829 export https_proxy=101.100.81.102:10829

    不开魔法的话,是真的很慢,或许卡到编译不出来。

    编译完成后如下图:

    image.png

    image.png

Clion使用

在Clion中配置cmake工程路径,点击这里:

image.png

填写cmake的构建路径:

image.png

设置完确认,然后点击下图这里的重载cmake的构建,无报错则成功:

image.png

这个带test的工程是可以执行的:

image.png

Linux是依靠这个so在执行:

image.png

Android交叉编译

在Linux编译出Android平台可以使用的so文件包。

下载NDK:

https://developer.android.com/ndk/downloads?hl=zh-cn

我下载版本:https://github.com/android/ndk/wiki

WSL中执行:

bash
cd ~ wget https://dl.google.com/android/repository/android-ndk-r27b-linux.zip sudo apt install unzip -y unzip android-ndk-r27b-linux.zip # 或者 wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip unzip android-ndk-r25c-linux.zip

声明 ANDROID_NDK_ROOT 环境变量,如下修改成自己的路径

shell
export ANDROID_NDK_ROOT=/home/xiedong/android-ndk-r27b # 或者 export ANDROID_NDK_ROOT=/home/xiedong/android-ndk-r25c

Clang 是一个用 C++ 编写的编译器前端工具,主要用于编译 C、C++、Objective-C 以及其他语言的代码。它是 LLVM(Low-Level Virtual Machine) 项目的一部分,用来替代 GNU 编译器套件中的 GCC。Clang 的主要目的是提供一个模块化、可扩展且快速的编译器,同时生成高效的代码。它广泛用于各类项目中,尤其是在苹果的 macOS 和 iOS 开发中作为默认的编译器工具链。

进入04compile目录

shell
cd 04compile

android_armv8.conan:

bash
[settings] arch=armv8 build_type=Release compiler=clang compiler.libcxx=c++_static compiler.version=14 os=Android os.api_level=21 [tool_requires] android-ndk/r25c [options] [env]

运行脚本编译:

shell
bash start_compile_android_with_armv8.sh

image.png

这文件就是编译出的so文件:

image.png

Conan 常用指令

Conan 是一个跨平台的 C/C++ 包管理器,旨在帮助开发者管理项目依赖,解决复杂的依赖问题。它支持多种构建系统(如 CMake、MSBuild 等)和编译器(如 GCC、Clang、Visual Studio 编译器等),并且允许用户轻松地下载、构建和集成第三方库。

1. Conan 的核心功能

  • 依赖管理:通过 conanfile.txtconanfile.py 文件定义项目的依赖项,并自动处理依赖树。
  • 跨平台支持:支持在不同平台和编译器之间无缝使用相同的依赖。
  • 缓存机制:通过本地缓存存储下载的包,避免重复下载和构建。
  • 版本控制:为每个包定义不同的版本和编译选项。
  • 包存储和共享:通过公共或私有的 Conan 服务器或 Artifactory,团队可以方便地分享和重用包。

2. Conan 工作流程

  • 安装依赖:使用 conan install 下载并安装依赖。
  • 构建包:通过 conan create 构建并发布自己的包。
  • 管理配置文件:使用 conan profile 设置编译环境。
  • 搜索包:用 conan search 查找所需包。
  • 上传包:利用 conan upload 将包发布到远程仓库。

3. 常用指令详解

  1. conan install:安装项目依赖

    bash
    conan install .
    • 常用选项
      • --build=missing:自动从源代码构建缺失的包。
      • --profile=<profile_name>:使用特定配置文件。
  2. conan create:创建和构建包

    bash
    conan create . user/channel
    • 常用选项
      • --build:强制重新构建包。
  3. conan search:搜索本地或远程包

    bash
    conan search <package_name>
    • 常用选项
      • -r <remote_name>:指定远程仓库进行搜索。
  4. conan upload:上传包到远程仓库

    bash
    conan upload <package_name>/<version>@<user>/<channel> -r <remote_name>
    • 常用选项
      • --all:上传包的所有版本。
      • --confirm:无需确认直接上传。
  5. conan remove:删除本地或远程的 Conan 包

    bash
    conan remove <package_name>/<version>@<user>/<channel>
    • 常用选项
      • -f:强制删除,无需确认。
      • --remote <remote_name>:删除远程包。
    • 清除所有本地缓存包:
      bash
      conan remove "*" -f
  6. conan profile:管理编译配置文件

    bash
    conan profile new <profile_name> --detect conan profile update settings.compiler=gcc <profile_name>
    • 常用操作
      • new:创建新配置文件。
      • update:更新配置文件设置。
  7. conan config:管理全局设置

    bash
    conan config set general.revisions_enabled=1 conan config list
  8. conan remote:管理远程仓库

    bash
    conan remote add <remote_name> <remote_url> conan remote remove <remote_name> conan remote list

4. 配置文件示例

  • 典型的 conanfile.txt 示例:

    ini
    [requires] boost/1.75.0 fmt/7.1.3 [generators] cmake [options] boost:shared=True
  • 典型的 conanfile.py 示例:

    python
    from conans import ConanFile, CMake class HelloConan(ConanFile): name = "hello" version = "1.0" settings = "os", "compiler", "build_type", "arch" requires = "boost/1.75.0", "fmt/7.1.3" generators = "cmake" def build(self): cmake = CMake(self) cmake.configure() cmake.build()

Conan问题

conanbuildinfo.txt 是由 Conan 生成的文件,主要用于保存编译项目所需的依赖路径和配置信息。它包含了所依赖的库的头文件路径、库文件路径、编译选项、宏定义等信息。在编译过程中,这些信息会被编译器和链接器使用,以便正确地找到和链接依赖的库。

image.png

conan remove "*" -f 会删除所有本地的Conan包。也就是/home/xiedong/.conan/data下面的东西。

结语

通过本文的详细步骤,您已经成功在 Windows 10 上安装并配置了 WSL2 环境,并搭建了完整的 C++ 开发环境。WSL2 不仅提升了开发效率,还为跨平台开发提供了便利。希望这篇指南对您的开发之路有所帮助!

如有任何问题或建议,欢迎在下方留言交流。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!