Hardware component drivers framework with unified management interface
当前访问频次受限,请登录后继续访问
从源码构建
推荐方式:使用智能构建脚本
# 克隆仓库后,使用智能构建脚本(推荐)
./scripts/smart_build.sh
智能构建脚本会:
- 自动检测系统资源(CPU核数、内存、Swap等)
- 根据可用内存动态计算最优并发数
- 避免因过度并发导致的编译卡死问题
- 提供彩色输出和进度提示
手动构建方式
# 配置构建
meson setup builddir
# 编译(使用1/4的核数进行编译)
((n=`nproc`/4)); meson compile -C builddir -j $n
# 运行测试
meson test -C builddir
# 清空重新全量编译、测试
rm -rf subprojects/libmcpp; rm -rf builddir; meson setup builddir; ((n=`nproc`/4)); time meson compile -C builddir -j $n; meson test -C builddir
rm -rf subprojects/libmcpp; rm -rf builddir; meson setup builddir; time meson compile -C builddir; meson test -C builddir
rm -rf builddir; meson setup builddir; ((n=`nproc`/4)); time meson compile -C builddir -j $n; meson test -C builddir
# 单个模块编译、测试
cd /root/openubmc/component_drivers
# 编译特定测试用例
meson compile -C builddir tests/drivers/chip/pca9545/test_pca9545_abi
meson compile -C builddir tests/drivers/chip/pca9555/test_pca9555_abi
meson compile -C builddir tests/drivers/chip/lm75/test_lm75_abi
meson compile -C builddir tests/drivers/chip/ads78/test_ads78_abi
# 运行特定测试套件
meson test -C builddir --suite=lm75
meson test -C builddir --suite=ads78
meson test -C builddir --suite=pca9555
编译问题解决方案
问题现象:如果不指定并发任务数量(-j 参数),默认使用所有核进行编译时,会出现:
- 编译过程中卡住
- CPU占用率100%
- 系统响应缓慢,需要外界终止编译
根本原因:
- 高并发内存消耗:128个CPU核心同时编译时,每个g++进程消耗1-2GB内存
- 无Swap分区:系统没有配置Swap,内存不足时无法交换到磁盘
- 内存压力:瞬间内存需求可能超过可用内存,导致系统卡死
解决方案:
- 使用智能构建脚本(推荐):
./scripts/smart_build.sh - 手动限制并发数:使用
((n=nproc/4)); meson compile -C builddir -j $n - 配置Swap分区:为系统添加Swap分区作为内存缓冲
- 监控内存使用:编译前确保有足够的可用内存
最佳实践:
- 对于大型项目,并发数 = min(CPU核数/4, 可用内存GB/2)
- 没有Swap时应更保守,建议并发数不超过可用内存GB/3
- 编译前释放不必要的内存占用