1. 安装docker
Docker官网 内存8G,16G
1.1 docker启动报错和解决方案:
a. 更新linux内核包,Windows Subsystem for Linux
解决方案: 下载 Linux 内核更新包
**b.打开VT虚拟化
控制面板 -> 程序和功能 -> 启用或关闭Windows功能 -> 勾选‘Hyper-V’、‘Windows虚拟机监控程序平台’、‘适用于Linux的Windows子系统’、‘虚拟机平台’ -> <确定>
cmd终端执行命令:bcdedit /set hypervisorlaunchtype auto
c.设置docker镜像仓库
"registry-mirrors":"https://hub-mirrors.c.163.com","https://mirror.baidubce.com","https://9cpn8tt6.mirror.aliyuncs.com"]
d.解决WSL2中Vmmem内存占用过大问题
### 修改当前用户下的文件,如果没有创建一个
%UserProfile%/.wslconfig
### .wslconfig 文件内容
[wsl2]
memory=2GB
swap=0
localhostForwarding=true
### 以管理员的权限在 cmd 中执行如下命令
wsl一shutdown bash
1.2 查看 docker 信息
### docker 信息
docker info
### docker 版本
docker version
### 搜索 ubuntu 系统镜像
docker search ubuntu:20.04
### 拉取 ubuntu 镜像
docker pull xxx
1.3 创建并启动 docker 实例
docker run -it -v /D/share/flies:/dockerFshare/flies:/dockerFolder -d -p 220:220 --name=docker_ubuntu 镜像Id
为宿主机与docker实例创建共享文件夹:
/D/share/flies为宿主主机;/dockerFolder为docker实例中的文件夹
Ubuntu 系统配置
- 添加 su 用户
## 添加新用户,执行如下命令,输入密码 (该命令创建的用户具有 sudo 权限)
adduser newUser su newUser
## 为非 su 用户设置 sudo 权限
vim /etc/sudoers
### 找到 root ALL=(ALL) ALL,在下一行添加新用户,如下命令
newuser ALL=(ALL) ALL
- 安装开发工具
## 更新 apt-get
sudo apt-get update
## 安装 GCC
sudo apt-get install build-essential
## Git 安装
sudo apt-get install git
## GDB 调试器
sudo apt-get install gdb
- 更换
apt 源
修改 sources.list 配置文件;
sudo vim /etc/apt/sources.list
在文件最前面添加以下条目(不同的Ubuntu版本对应的源地址不同,根据版本设置相应的源),保险起见,操作之前做好备份:sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
阿里云源:ubuntu 20.04 Ubuntu 镜像
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
1.4 进入容器实例
## 替换 userName 和 实例Id
docker exec -it -u userName 实例Id /bin/bash
1.5 备份容器实例
### container_id: 需要备份的容器实例Id
### imagename: 镜像名称
### v1.0: tag(版本号)
docker commit container_id imagename:v1.0
2. VSCode 配置
2.1 安装 C/C++ 插件
2.2 安装 Remote-Containers
2.3 连接 docker container
3. Ubuntu20 搭建 gRPC 源码环境
3.1 安装环境依赖
sudo apt-get install pkg-config ###(安装如果慢,请换ubuntu源)
sudo apt-get install autoconf automake libtool make g++ unzip
sudo apt-get install libgflags-dev libgtest-dev
sudo apt-get install clang libc++-dev
sudo apt-get install golang
sudo apt-get install openssl libssl-dev
sudo apt-get install zlib1g zlib1g-dev
sudo apt-get install libc-ares-dev libc-ares2
sudo apt-get install cmake
3.2 下载 gRPC 源码和依赖
git clone https://gitee.com/githubplus/grpc.git
cd grpc
git tag
git checkout v1.20.x
## 修改.gitmodules,将<github.com>替换为<gitee.com/githubplus>
## 下载依赖的模块
git submodule sync
git submodule update --init
3.3 编译 protobuf
cd third party/protobuf/
## 修改.gitmodules <github.com>
git submodule update --init --recursive ## 确保克隆子模块,更新第三方源码
## 生成配置脚本
sudo ./autogen.sh
## 生成 Makefile 文件
sudo ./configure
sudo make
sudo make install
## 更新共享库缓存
## 有报错的话尝试修改:/etc/sudo.conf -->> Set disable_coredump false
sudo ldconfig
## 查看软件的安装位置
which protoc
## 检查是否安装成功
protoc --version
3.4 编译 gRpc
回到gRpc源码根目录编译。首先查看下gcc版本号,若 gcc > 9.0+,编译之前需修改如下文件:
src/core/lib/gpr/log_linux.cc
src/core/lib/gpr/log_posix.cc
src/core/lib/iomgr/ev_epollex_linux.cc
### 将这几个文件中的 gettid()改为 sys_gettid()
修改 third_party/boringssl/crypto/x509/x509_test.cc Test 为 Test1,只修改类(struct), 其它不变。
然后执行如下命令:
### 生成 makefile
cmake -DgRPC_INSTALL=ON -DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_SSL_PROVIDER=package
## 编译
sudo make
sudo make install
之后就可以进入 examples/cpp 编译运行示例了。