You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三星S22U内核编译报错求助:解决cam_actuator_i2c_read重定义问题

三星S22U(SM-S908U)内核编译问题解决及完整指南

一、解决cam_actuator_i2c_read重定义错误

错误根源是cam_actuator_core.c文件中同一函数被两次定义,具体修复步骤:

  1. 打开目标文件:
    /home/ulis/kernel13/vendor/qcom/opensource/camera-kernel/drivers/cam_sensor_module/cam_actuator/cam_actuator_core.c
    
  2. 定位到1636行的cam_actuator_i2c_read函数:
    • 若该函数与149行的版本逻辑完全一致,直接删除1636行开始的整个函数代码块
    • 若函数存在功能差异(属于源码bug,C语言不支持函数重载),修改其中一个函数的名称(例如改为cam_actuator_i2c_read_ext),同时全局替换所有调用该函数的位置
  3. 保存文件后重新执行编译脚本

二、三星S22U内核完整编译步骤

  1. 环境准备
    • 使用Ubuntu 20.04/22.04系统,安装编译依赖:
      sudo apt install build-essential libssl-dev flex bison libncurses-dev libelf-dev dwarves
      
  2. 源码与工具链配置
    • 解压三星开源包SM-S908U_NA_13_Opensource.zip到工作目录(如~/kernel13)
    • 下载对应ARM64交叉编译工具链(推荐gcc 11.x版本),解压后添加到环境变量:
      export PATH=$PATH:/path/to/your/toolchain/bin
      
  3. 内核配置
    • 进入内核主目录:
      cd ~/kernel13/kernel_platform/msm-kernel
      
    • 加载SM-S908U的默认配置(确认配置文件名,通常在arch/arm64/configs目录下):
      make ARCH=arm64 smsmaxq_eur_open_defconfig
      
  4. 编译内核
    • 执行编译命令(-j$(nproc)利用全部CPU核心加速):
      make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j$(nproc)
      
    • 若需编译单独模块,切换到模块目录执行对应编译指令即可
  5. 获取编译产物
    • 内核镜像:arch/arm64/boot/Image
    • 设备树文件:arch/arm64/boot/dts/qcom/目录下的对应dtb文件

内容的提问来源于stack exchange,提问作者ULis3h

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:37:32