从源码编译 Yao 应用
系统环境准备
不要在 WSL2 系统中挂载 Windows 盘,磁盘性能会非常慢。
注意:本记录为个人版本的构建过程。
请检查操作系统的 glibc 版本,目标机器的 glibc 版本应高于构建机器。
sh
ldd --version
ldd (GNU libc) 2.17
Ubuntu 安装开发工具
sh
sudo apt install gcc g++ make -y
安装 Go
需要安装 go 1.23.4
和 node 16
。
sh
mkdir -p $HOME/go/go1.23.4
cd $HOME/go
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
tar -xvf go1.23.4.linux-amd64.tar.gz -C $HOME/go/go1.23.4
修改 .bashrc
文件,添加 go 路径:
sh
vi ~/.bashrc
tee -a ~/.bashrc <<'EOF'
export GOROOT="$HOME/go/go1.23.4/go"
export GOPATH="$HOME/go/workspace"
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"
alias go='http_proxy=http://127.0.0.1:8118 https_proxy=http://127.0.0.1:8118 no_proxy=localhost,127.0.0.0/8,::1 go'
EOF
更新环境变量:
sh
source ~/.bashrc
安装 go-bindata
sh
go install -a -v github.com/go-bindata/go-bindata/...@latest
安装 Node.js 18
sh
# 安装 nvm
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install v18.20.8
nvm alias default v18.20.8
nvm use v18.20.8
npm i -g pnpm
克隆 Yao 源码
从 GitHub 拉取所有源码。不要更改文件夹 $HOME/projects/yao-app-sources
。
sh
mkdir -p $HOME/projects/yao-app-sources
cd $HOME/projects/yao-app-sources
# 设置 git 代理(如有需要)
git config --global http.proxy http://127.0.0.1:8118
git config --global https.proxy http://127.0.0.1:8118
git clone https://github.com/wwsheng009/xgen xgen-v1.0
git clone https://github.com/wwsheng009/yao
git clone https://github.com/wwsheng009/xun
git clone https://github.com/wwsheng009/kun
git clone https://github.com/wwsheng009/go-hdb
git clone https://github.com/wwsheng009/v8go
git clone https://github.com/wwsheng009/yao-init
git clone https://github.com/wwsheng009/gou
构建 xgen
sh
cd yao
export NODE_ENV=production
echo "BASE=__yao_admin_root" > ../xgen-v1.0/packages/xgen/.env
cd ../xgen-v1.0 && pnpm install --no-frozen-lockfile && pnpm run build
echo "BASE=yao" > ../xgen-v1.0/packages/xgen/.env
下载 v8go 库
对于 Ubuntu,需要安装 git-lfs:
sh
cd v8go
sudo apt-get install git-lfs
git lfs fetch
git checkout .
# 如果存在 zip 文件,需要解压
cd deps/linux_x86_64
unzip libv8.a.zip
编译 Yao 应用
sh
cd yao && make debug1
# 检查版本
yao version
常见问题与建议
- 如果遇到依赖包下载缓慢,可以考虑配置国内镜像。
- 编译过程中如遇到权限问题,请确保当前用户有足够权限,或使用 sudo。
- 推荐在全新 Ubuntu 环境下操作,避免环境污染。
如有疑问,欢迎在社区或 GitHub 提 Issue 交流。