背景
很多 c/c++程序的运行环境都是在linux下,而开发者使用的工作电脑通常都是windows为主。这就不可避免的产生一个问题:windows下敲代码、linux下编译。
针对这种情况,大家的方案也是不少,笔者使用过的方式如下:
1.ssh接入linux服务器,直接在终端使用vim+make;
2.使用vscode等ide在本地电脑修改、编辑,然后把修改后的文件上传到linux上编译;
3.使用vs的跨平台+vm虚拟机搭建开发环境;
上面的三种都使用过一段时间,但是最后都放弃了,因为都各有缺点:
1 没有代码补全、关联跳转懂ide功能,开发不方便;
2 需要服务器配合,在办公环境还好,如果处于网络不方便、只有一台工作电脑情况下,很难编译;
3 vm虚拟机的文件拷贝不方便,而且存在出问题的情况的不少,甚至随着虚拟机文件越来越大,出问题的情况越来越多,甚至最后虚拟机无法启动。
笔者也是在第三种情况出现后,才寻找替代方案,最后找到如下组合,可以满足需求(1台windows电脑、ide智能、可以编译和运行、环境稳定):
vs+Docker Desktop+docker
Docker Desktop 安装
docker desktop 简单说是一个windows上的docker引擎+可视化管理的工具。
0 环境准备
在安装软件之前,需要对电脑做一下设置,否则安装/启动会出问题。
①安装wsl
打开 powershell 或命令行cmd管理员终端,执行wsl --help 命令看看,有没有 wsl,如果有就不用安装了,直接 wsl --set-default-version 2 设置 wsl2 为默认版本就行了。如果本机没有 wsl,需要去安装。
②开启虚拟化技术
1. Hyper-V 、 2.适用于 Linux 的 Windows 子系统 、3.虚拟机平台、 4.容器、5.Windows虚拟机监控程序平台

如果是家庭版,默认是没有Hyper-v的。复制下面代码,然后保存成Hyper-v.bat脚本,使用管理员权限运行脚本,安装Hyper-v。
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt
for /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hv.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
Pause
1.下载安装包
docker官网:https://www.docker.com/
2.安装
双击打开,有勾选就勾选,一路下一步,安装完成后会生成快捷方式。

3.配置镜像源
docker的官网镜像源速度慢,建议增加国内的源。
打开Docker ,找到 设置–docker engine 中,添加如下图所示的镜像源地址

选择DockerEngine,在其中输入
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://h6muxxxx.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com",
"https://mirror.ccs.tencentyun.com"
]
}

然后点击右下角应用,完成即可。
docker镜像创建
在cmd中,通过docker search 查找需要的linux镜像,比如,centos7

通过docker pull 命令 拉取镜像到本地。
然后通过run命令,生成容器
docker run -itd --name=docker-c -v E:\docker-c++\dockerDir:/home --privileged dokken/centos-7:latest /usr/sbin/init
这样就创建一个名字为docker-c的容器并运行,然后进入容器内部
docker exec -it docker-c /bin/bash
c++环境设置
由于镜像是基本环境,无法满足开发需求,需要增加相关的配置
0.有的镜像太简单,连基本源都没有,需要自己配置yum,可以参考我另一篇文章:centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64
①安装gcc
yum group install "Development Tools"
②安装并启动ssh,由于vs工具需要通过ssh来远程服务器,所以镜像必须开启ssh
安装软件
yum install vim passwd openssl openssh-server -y
修改root密码
passwd
配置ssh
vim /etc/ssh/sshd_config
UsePAM no
UsePrivilegeSeparation no
PermitRootLogin yes
PasswordAuthentication yes
UseDNS no
GSSAPIAuthentication no
启动ssh并设置为开机启动
systemctl start sshd
systemctl enable sshd
③安装cmake
安装gcc等必备程序包(已安装则略过此步)
yum install -y gcc gcc-c++ make automake
安装wget (已安装则略过此步)
yum install -y wget
获取CMake源码包
wget https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz
解压CMake源码包并进入
tar -zxvf cmake-3.15.5.tar.gz
cd cmake-3.15.5
编译
./bootstrap && make -j4 && sudo make install
到目前为止,开发需要的依赖环境已经安装完成。
提交容器
通过下面命令,把当前容器提交到镜像中
docker commit docker-c docker-c
这样会生成一个附带上述开发环境的新镜像docker-c
重新运行
通过docker run 命令,可以在docker-c的镜像基础上,运行携带c++开发环境的容器(将ssh的端口映射到容器外面,因为vs的跨平台需要使用ssh)。
docker run -itd --name=docker-c-ssh -v E:\docker-c++\dockerDir:/home -p 22:22 --privileged docker-c:latest /usr/sbin/init
ide设置
参考vs跨平台设置,其中使用的服务端地址就是本机地址

7099

被折叠的 条评论
为什么被折叠?



