2342 字
12 分钟
接触C语言之前的准备: 环境搭建
NOTE

本篇文章的目的是 C 语言基本环境的搭建, 不做任何概念原理工具的介绍

博主会尽量给出一个 即使是从未接触过编程的小白 也能完成的方案

但你至少需要了解 Windows 中一些工具的使用, 比如: 解压工具、文本编辑工具等

最好能够使用更”科学”的方式连接网络

NOTE

搭建过程中所需要用到的工具, 已打包好放在此处, 请下载使用

👉 点这里

WARNING

博主今后使用的一些工具, 也就是本篇文章搭建的环境, 在今后的使用上可能具有一定的学习门槛, 但我个人认为这是有必要的

如有建议, 敬请在评论提出 👌

开启 Hyper-V#

点击重新启动之前, 最好保存你的所有其他任务

等待重新启动之后, 完成Hyper-V的开启

如果你的列表中没有Hyper-V的相关选项, 请参照下面的步骤执行

如果上面的步骤已经完成, 可以直接跳到 👉 下一部分


如果Windows功能列表中, 没有Hyper-V相关选项, 可以这样操作:

  1. 打开文件扩展名:

  2. 新建文本文档:

  3. 文本文档输入以下内容:

    Terminal window
    pushd "%~dp0"
    dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
    for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
    del hyper-v.txt
    Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

  4. 文本文档重命名为hyperv.bat, 并右键->管理员身份启动:

  5. 等待运行结束, 并根据提示输入'Y'重启系统

  6. 系统重启完成之后, 回到文章开头执行开启Hyper-V的相关操作: 👉 指路

配置#

WSL 安装#

打开Microsoft Store, 搜索openEuler 22.03:

点击安装, 下载完成后点击打开, 大概率会弹出这两个窗口:

图 1图 2

可以在提示有 “按下任意键安装适用于 Linux 的 Windows 子系统” 的窗口中, 按下任意按键, 等待下载完成:

!!!重新启动!!!

然后再重新打开Microsoft Store, 搜索openEuler 22.03, 点击打开, 等待安装成功:

然后依次输入username和对应的密码:

注意:

输入密码期间, 密码是不显示的, 实际已经输入成功了

密码一共需要输入两次

一个在Windows中运行的Linux虚拟环境就安装好了

之后要运行这个环境, 只需要打开终端:

然后输入wsl就可以启动:

NOTE

选择openEuler 22.03是因为环境配置相对比较简单

如果你熟悉任何其他的Linux系统, 都可以选择

环境配置#

首先, 在WSL环境下, 执行命令安装必要的软件:

Terminal window
sudo dnf -y install g++ gdb git man-pages man-pages-help zsh wget unzip jsoncpp-devel tree

执行之后, 输入密码

可能会提示 “Waiting for process with pid xxx to finish.”

实际表示正在执行, 等待执行完毕就好:

most#

Terminal window
wget https://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/m/most-5.1.0-6.el8.x86_64.rpm
sudo rpm -ivh most-5.1.0-6.el8.x86_64.rpm

nvim#

从博主在文章开头提供的压缩包中, 获取nvim-linux64.tar.gz文件

将其放入wsl的当前用户目录下:

Terminal window
$ pwd
/home/humid1ch
# pwd 用于查看当前所在路径

或者, 网络环境良好的情况下, 也可以直接通过命令把文件下载下来:

Terminal window
wget https://github.com/neovim/neovim/releases/download/v0.10.1/nvim-linux64.tar.gz

然后

Terminal window
# 解压
tar -xvf nvim-linux64.tar.gz
# 解压完成之后
sudo mv nvim-linux64 /usr/local/nvim
# 给nvim建立软连接
sudo ln -s /usr/local/nvim/bin/nvim /usr/local/bin/nvim

执行完成之后, 输入nvim就能打开软件:

输入:q, 退出应用

TIP

软件使用小贴士:

vim处于普通模式时, 按下:可以进入vim的命令模式

:q可以不保存退出, q表示quit

python支持#
Terminal window
# 先安装python3
sudo dnf install python3
# 再安装pip3
sudo dnf install python3-pip
# 再进行nvim的python支持
sudo pip3 install pynvim

nvim配置#

从博主在文章开头提供的压缩包中, 获取nvim文件夹

将其放入用户文件夹的.config路径下:

Terminal window
$ pwd
/home/humid1ch/.config

然后输入nvim运行nvim等待配置完成:

如果因为网络问题出现错误, 可以尝试多次重新打开

当然, 如果有能力已更”科学”的方式连接网络, 建议使用更”科学”的方式配置

配置还没有完全完成

重新打开nvim, 并手动输入:MasonInstall clangd clang-format lua-language-server:


从博主在文章开头提供的压缩包中, 获取win32yank.exe文件, 放入Windows系统的C:\Windows\System32\路径下

至此, neovim安装、配置完成

win32yank.exe, 提供 nvimWindows互通剪切板 的功能

博主提供的是x64版本的, 如果需要32位的, 可以自行去 win32yank - Github 下载

zsh#

zsh是一种shell软件, 简单理解就是Linux输入命令所依靠的软件

zsh比较新人推荐使用, 如果你更习惯其他shell当然也可以根据自己的喜好来

zsh在最开始已经完成了安装, 只需要切换默认shellzsh就可以了:

Terminal window
chsh -s /bin/zsh

重新进入wsl就可以看到生效了:

0, 完成.zshrc文件的创建

oh-my-zsh#

安装oh-my-zsh, 你可以将它理解为zsh的一个增强插件

Terminal window
# 直接在命令行执行
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

此时, 使用nvim打开.zshrc, 可以看到.zshrc的内容

Terminal window
nvim ~/.zshrc

TIP

软件使用小贴士:

shell中执行命令nvim 文件, 就可以用nvim打开文件


下面这三个小插件可以不用安装, 但建议安装, 一般情况下它可以让你的zsh使用起来更加舒服

小插件#

首先, powerlevel10kzsh的一个主题

执行这个命令, 可以下载powerlevel10k:

Terminal window
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

使用nvim编辑.zshrc文件

ZSH_THEME="robbyrussell"修改为ZSH_THEME="powerlevel10k/powerlevel10k"

zsh_theme

TIP

软件使用小贴士:

vim处于普通模式时:

i, 进入插入模式, 可以正常输入文本, 在光标之前. 同时 退出普通模式

a, 进入插入模式, 可以正常输入文本, 在光标之后. 同时 退出普通模式

h, 为左移

l, 为右移

k, 为上移

j, 为下移

yy, 为复制本行

p, 为粘贴

e, 为跳过一个单词

v, 进入视图模式, 可以选择文本

x, 删除当前选择文本

vim处于插入模式时, 按ESC可以退出插入模式, 回到普通模式

autosuggestionszsh的命令联想建议插件

执行这个命令:

Terminal window
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions

syntax-highlightingzsh的命令高亮插件

执行这个命令

Terminal window
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

使用nvim编辑.zshrc文件

plugins=(git)处, 添加这两个插件, 为plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

然后退出到shell, 执行source ~/.zshrc, 并根据提示和喜好配置powerlevel10k主题:

.zshrc个人配置#

下面是博主个人习惯在~/.zshrc中添加的配置:

Terminal window
# 防止 rm 直接将文件删掉, 所以将 rm定义成一个函数, 起到 mv -t 的作用
rm() {
if [[ $1 == "-rf" ]]; then
shift
mv -t ~/.delete/. "$@"
else
mv -t ~/.delete/. "$@"
fi
echo "成功将文件移动到 ~/.delete, 请注意清理"
}
# 方便打开多个文件, 一起加载到nvim的bufferline插件里
alias nvim="nvim -p"
alias vim="nvim -p"
# cat, t 太远了, 而且shell cat查看文件内容默认的Tab长度是8, 这里改成cas,并以4为Tab长度查看
alias cas="cat | expand -t 4"
alias unsetproxy="unset https_proxy http_proxy && git config --global --unset https.proxy && git config --global --unset http.proxy"
# most分页
export PAGER=most

配置完, 需要执行source ~/.zshrc生效

shell中执行mkdir ~/.delete创建回收目录

然后, 因为在.zshrc中, 把rm定义成了一个函数

所以, 原本的rm命令就没有办法正常执行了

所以, 要给原本的rm建立一个软连接

shell中执行这个命令:

Terminal window
sudo ln -s /usr/bin/rm /usr/bin/rlrm

之后, 执行rlrm就是真正的rm移除操作

update#
NOTE

博主现在使用的shell已经从zsh转到了fish, fish也是一款非常优秀的shell, 在最基本的使用上没什么差别

有兴趣可以尝试一下

gdb#

gdb已经安装过了, 但是使用上可能需要安装一些内容

WARNING

你不需要知道下面这些操作都是干什么的, 只需要跟着做一遍, 本篇文章只是为了配置一个简单好用的环境

首先使用nvim简单写一个 C 语言程序:

int main() {
return 0;
}

然后在shell中执行gcc main.c -g, 会生成一个可执行程序:

再执行gdb a.out, 之后输入r并回车:

记录这条指令后面需要使用

我的是dnf debuginfo-install glibc-2.34-152.oe2203sp4.x86_64

gdb中输入quit, 并回车退出

然后在shell中执行: gcc main.c -g, 会生成一个可执行程序并覆盖原来的可执行程序:

同样, 执行gdb a.out之后, 输入r并回车:

记录这两条指令

我的是dnf debuginfo-install glibc-2.34-152.oe2203sp4.x86_64dnf debuginfo-install libgcc-10.3.1-67.oe2203sp4.x86_64 libstdc++-10.3.1-67.oe2203sp4.x86_64

其中glibc的可能与上面的一致

最后在shell中, 使用sudo执行dnf debuginfo-install, 安装这三个缺失的库:

输入y并回车, 等待安装

可能需要占用2.0G+的硬盘空间

耗时八分半

安装完成后, 再使用gdb就没有Missing提示了

环境演示#

这个简单的 C 语言环境, 使用nvim+clang+lsp实现了最基本的C/C++的语法补全功能

至此

一个比较简单、舒适的C/C++开发环境就搭建好了

作者
Humid1ch
发布于
2025-03-17
许可协议
CC BY-NC-SA 4.0