Build Tools Installation - langningchen/miniapp GitHub Wiki
CMake 和编译工具链安装
本指南帮助您安装 CMake 构建系统和 ARM 交叉编译工具链,用于编译有道词典笔的 C++ 代码。
🎯 什么是 CMake 和交叉编译?
- CMake: 跨平台的构建系统生成器,管理复杂的编译过程
- 交叉编译: 在一个平台(x86_64)上编译出另一个平台(ARM)的可执行文件
- 工具链: 包含编译器、链接器等工具的完整工具集
📋 系统要求
- Ubuntu 18.04+ 或 WSL2
- 至少 2GB 可用磁盘空间
- 已安装基础开发工具(build-essential)
🔧 安装 CMake
检查当前版本
# 检查是否已安装 CMake
cmake --version
方法一:使用包管理器安装
# 更新包列表
sudo apt update
# 安装 CMake
sudo apt install -y cmake
# 验证安装
cmake --version
方法二:安装最新版本(推荐)
如果需要最新版本的 CMake:
# 卸载旧版本(如果存在)
sudo apt remove cmake
# 下载最新版本(检查官网获取最新链接)
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
# 添加 Kitware 仓库
echo 'deb https://apt.kitware.com/ubuntu/ focal main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
# 更新并安装
sudo apt update
sudo apt install -y cmake
# 验证版本
cmake --version
方法三:从源码编译
# 下载 CMake 源码
wget https://cmake.org/files/v3.27/cmake-3.27.7.tar.gz
tar -xzf cmake-3.27.7.tar.gz
cd cmake-3.27.7
# 编译安装
./bootstrap
make -j$(nproc)
sudo make install
# 验证安装
cmake --version
🛠️ 安装编译工具
基础编译工具
# 安装完整的构建环境
sudo apt install -y \
build-essential \
gcc \
g++ \
make \
libc6-dev \
linux-libc-dev \
pkg-config
安装额外工具
# 安装其他必需工具
sudo apt install -y \
iconv \
autoconf \
automake \
libtool \
curl \
wget \
unzip \
tar \
gzip
🌐 下载 ARM 交叉编译工具链
根据项目要求,您需要下载特定的 ARM 工具链。
确定所需工具链
根据您从设备获取的版本信息,选择对应的工具链:
# 查看版本信息文件
tar -tf versionInfo.tar.gz
# 提取版本信息
tar -xzf versionInfo.tar.gz -C ./jsapi
# 查看系统信息
cat jsapi/system_info.txt # 如果存在这个文件
下载工具链
项目支持两种主要的工具链:
GLIBC 工具链(推荐):
# 创建工具链目录
mkdir -p jsapi/toolchains
cd jsapi/toolchains
# 下载 GLIBC 工具链
wget https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--stable-2018.11-1.tar.bz2
# 解压工具链
tar -xjf armv7-eabihf--glibc--stable-2018.11-1.tar.bz2
# 返回项目根目录
cd ../..
uClibc 工具链:
# 如果需要 uClibc 工具链
cd jsapi/toolchains
wget https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--stable-2018.11-1.tar.bz2
tar -xjf armv7-eabihf--uclibc--stable-2018.11-1.tar.bz2
cd ../..
验证工具链
# 检查工具链目录结构
ls -la jsapi/toolchains/
# 测试交叉编译器
jsapi/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/arm-buildroot-linux-gnueabihf-gcc --version
您应该看到类似输出:
arm-buildroot-linux-gnueabihf-gcc (Buildroot 2018.11.1) 8.2.0
📁 配置项目结构
确保项目目录结构正确:
# 检查目录结构
tree jsapi/ -L 3
应该看到类似结构:
jsapi/
├── CMakeLists.txt
├── src/
├── include/ # 从版本信息中提取
├── lib/ # 从版本信息中提取
├── toolchains/
│ ├── armv7-eabihf--glibc--stable-2018.11-1/
│ │ ├── bin/
│ │ ├── include/
│ │ └── lib/
└── build/ # 将自动创建
🔧 配置 CMake
创建工具链文件
创建 CMake 工具链配置文件:
# 创建工具链配置文件
cat > jsapi/toolchain.cmake << 'EOF'
# CMake toolchain file for ARM cross-compilation
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# Specify the cross compiler
set(CMAKE_C_COMPILER ${CMAKE_CURRENT_SOURCE_DIR}/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/arm-buildroot-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER ${CMAKE_CURRENT_SOURCE_DIR}/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/arm-buildroot-linux-gnueabihf-g++)
# Specify the target environment
set(CMAKE_FIND_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/toolchains/armv7-eabihf--glibc--stable-2018.11-1/arm-buildroot-linux-gnueabihf/sysroot)
# Search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# Search for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
EOF
检查 CMakeLists.txt
检查项目的 CMake 配置文件:
# 查看主 CMakeLists.txt
cat jsapi/CMakeLists.txt
🏗️ 测试编译环境
创建构建目录
# 创建并进入构建目录
mkdir -p jsapi/build
cd jsapi/build
配置项目
# 使用交叉编译工具链配置项目
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake ..
# 检查配置是否成功
echo $? # 应该返回 0
编译测试
# 编译项目(仅测试,可能会失败,因为缺少依赖库)
make -j$(nproc)
# 或者只编译特定目标
make generate_rawdict_data_hpp
📚 安装其他依赖
根据项目需要,您可能还需要安装:
Python 和相关工具
# 安装 Python 3
sudo apt install -y python3 python3-pip
# 安装常用 Python 包
pip3 install --user requests
文本处理工具
# 安装文本处理工具
sudo apt install -y \
iconv \
dos2unix \
file
压缩和解压工具
# 安装压缩工具
sudo apt install -y \
zip \
unzip \
bzip2 \
xz-utils \
7zip
✅ 验证完整环境
运行以下检查确保环境配置正确:
# 检查 CMake
cmake --version
# 检查编译器
gcc --version
g++ --version
# 检查交叉编译器
jsapi/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/arm-buildroot-linux-gnueabihf-gcc --version
# 检查工具
make --version
iconv --version
# 检查 Python
python3 --version
# 检查项目结构
ls -la jsapi/
ls -la jsapi/toolchains/
🚀 下一步
编译工具安装完成后,请继续:
❗ 常见问题
问题1:CMake 版本过旧
解决方案:
# 卸载旧版本
sudo apt remove cmake
# 使用 Snap 安装最新版本
sudo snap install cmake --classic
# 或从官网下载最新版本
问题2:交叉编译器无法执行
解决方案:
# 检查文件权限
ls -la jsapi/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/
# 添加执行权限
chmod +x jsapi/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/*
# 检查是否为正确的架构
file jsapi/toolchains/armv7-eabihf--glibc--stable-2018.11-1/bin/arm-buildroot-linux-gnueabihf-gcc
问题3:找不到头文件或库文件
解决方案:
# 检查版本信息是否正确提取
ls -la jsapi/include/
ls -la jsapi/lib/
# 重新提取版本信息
tar -xzf versionInfo.tar.gz -C ./jsapi --overwrite
问题4:iconv 命令不存在
解决方案:
# 安装 iconv
sudo apt install -y libc-bin
# 验证安装
which iconv
iconv --version
问题5:下载工具链失败
解决方案:
# 使用国内镜像(如果有)
# 或使用代理下载
wget --proxy=on --proxy-user=user --proxy-password=pass http://...
# 或手动下载后传输到服务器