1. 久久派开发环境搭建全流程解析
作为一名长期使用龙芯平台的开发者,我深知在久久派这类国产开发板上搭建开发环境的痛点。相比x86架构的"开箱即用",龙芯平台需要更多手动配置环节。下面我将分享从零开始搭建完整开发环境的详细步骤。
1.1 基础系统环境准备
久久派出厂预装的是基于Loongnix的定制系统,但内核版本通常较旧。我们首先需要确保基础环境就绪:
bash复制# 更新现有软件包
sudo apt update
sudo apt upgrade -y
# 安装必要开发工具
sudo apt install -y build-essential git cmake
注意:龙芯架构的软件源地址与x86不同,若出现连接问题需要检查/etc/apt/sources.list中的源配置
1.2 交叉编译工具链配置
由于开发机可能是x86架构,我们需要配置龙芯专用的交叉编译工具链:
bash复制# 下载龙芯官方工具链
wget http://ftp.loongnix.org/toolchain/gcc/release/loongarch64-linux-gnu-cross-toolchain.tar.xz
# 解压到/opt目录
sudo tar -xvf loongarch64-linux-gnu-cross-toolchain.tar.xz -C /opt
# 设置环境变量
echo 'export PATH=/opt/cross-tools/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证安装是否成功:
bash复制loongarch64-linux-gnu-gcc --version
1.3 Python3环境升级
系统自带的Python3版本可能较旧,我们需要手动升级:
bash复制# 安装编译依赖
sudo apt install -y libssl-dev zlib1g-dev libncurses5-dev libsqlite3-dev
# 下载Python源码
wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz
tar -xvf Python-3.9.12.tar.xz
cd Python-3.9.12
# 配置编译参数
./configure --enable-optimizations --prefix=/usr/local/python3.9
# 编译安装
make -j$(nproc)
sudo make altinstall
实测发现:龙芯架构上编译Python需要额外1.5倍时间,建议在性能较好的机器上操作
2. 内核源码获取与编译准备
2.1 获取官方内核源码
久久派使用的内核是龙芯官方维护的Linux分支,我们需要从官方仓库获取:
bash复制git clone https://github.com/loongson/linux.git
cd linux
git checkout loongarch-next
2.2 内核配置调整
使用当前运行内核的配置作为基础:
bash复制cp /boot/config-$(uname -r) .config
make oldconfig
关键配置项需要特别注意:
- CPU类型选择"Loongson-3A5000"
- 启用所有USB相关驱动
- 文件系统支持需要包含ext4/btrfs
- 网络驱动确保包含板载网卡型号
2.3 依赖安装与编译环境检查
bash复制sudo apt install -y flex bison libelf-dev libssl-dev
make prepare
scripts/diffconfig .config > config_changes.txt
3. 内核编译与安装实战
3.1 并行编译优化技巧
龙芯平台编译内核时,合理设置线程数能显著提升速度:
bash复制# 查看CPU核心数
nproc
# 开始编译(使用nproc结果的70%作为线程数)
make -j$(($(nproc)*7/10))
经验分享:在4核龙芯3A5000上,全速编译会导致系统响应缓慢,建议保留30%资源给系统运行
3.2 模块与安装处理
编译完成后安装内核模块:
bash复制sudo make modules_install
sudo make install
更新引导配置(以GRUB为例):
bash复制sudo update-initramfs -c -k $(make kernelrelease)
sudo update-grub
3.3 内核版本验证
重启后检查新内核是否生效:
bash复制uname -r
cat /proc/version
4. 常见问题排查与解决方案
4.1 编译过程中的典型错误
问题1:缺少头文件
code复制fatal error: openssl/opensslv.h: No such file or directory
解决方案:
bash复制sudo apt install libssl-dev
问题2:链接器错误
code复制loongarch64-linux-gnu-ld: cannot find -lz
解决方案:
bash复制sudo apt install zlib1g-dev
4.2 启动失败处理方案
如果新内核无法启动,可以通过以下方式恢复:
- 在GRUB界面选择旧内核启动
- 进入系统后检查/var/log/kern.log
- 常见原因:
- 缺少关键驱动(需重新配置内核)
- 文件系统支持未启用(检查.config中的FS配置)
- 内核参数错误(检查/boot/grub/grub.cfg)
4.3 性能调优建议
新内核安装后,建议进行以下优化:
- 调整CPU调度策略:
bash复制echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
- 优化内存管理:
bash复制echo vm.swappiness=10 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
- 磁盘IO调度:
bash复制echo deadline | sudo tee /sys/block/sda/queue/scheduler
5. 开发环境完整验证
5.1 基础功能测试清单
完成环境搭建后,建议运行以下测试:
| 测试项 | 命令 | 预期结果 |
|---|---|---|
| 编译器 | loongarch64-linux-gnu-gcc --version |
显示正确版本 |
| Python | python3.9 --version |
Python 3.9.x |
| 内核模块 | lsmod |
显示已加载模块 |
| USB设备 | lsusb |
列出连接的USB设备 |
| 网络 | ping -c 4 www.loongnix.cn |
4个包全部可达 |
5.2 实际开发测试案例
以简单的GPIO控制为例验证开发环境:
- 编写测试代码gpio_test.c:
c复制#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define GPIO_PATH "/sys/class/gpio/gpio%d/value"
int main() {
int fd, gpio = 10; // 假设GPIO10连接LED
char path[64];
snprintf(path, sizeof(path), GPIO_PATH, gpio);
fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Open GPIO failed");
return 1;
}
for (int i=0; i<5; i++) {
write(fd, "1", 1);
sleep(1);
write(fd, "0", 1);
sleep(1);
}
close(fd);
return 0;
}
- 交叉编译:
bash复制loongarch64-linux-gnu-gcc gpio_test.c -o gpio_test
- 在开发板运行:
bash复制chmod +x gpio_test
./gpio_test
观察连接的LED是否按预期闪烁,验证整个工具链工作正常
6. 进阶开发环境配置
6.1 远程开发环境搭建
推荐使用VS Code + Remote SSH扩展进行远程开发:
- 在久久派上安装SSH服务:
bash复制sudo apt install openssh-server
sudo systemctl enable ssh
- 本地VS Code安装Remote-SSH扩展
- 连接时使用龙芯架构的远程工具链:
json复制// .vscode/c_cpp_properties.json
{
"configurations": [
{
"name": "LoongArch",
"includePath": [
"/opt/cross-tools/loongarch64-linux-gnu/include/**"
],
"compilerPath": "/opt/cross-tools/bin/loongarch64-linux-gnu-gcc",
"cStandard": "gnu11",
"cppStandard": "gnu++14"
}
]
}
6.2 容器化开发环境
使用Docker可以简化环境配置:
dockerfile复制FROM loongnix/loongnix:latest
RUN apt update && apt install -y \
build-essential \
git \
cmake \
python3-dev
ENV PATH="/opt/cross-tools/bin:${PATH}"
构建镜像:
bash复制docker build -t loongdev .
运行开发容器:
bash复制docker run -it --rm -v $(pwd):/workspace loongdev
在龙芯平台上使用原生Docker性能损失约15%,但对复杂项目环境隔离很有帮助。
