Hasson Wong 2024-02-02 14:18 采纳率: 66.7%
浏览 1
已结题

alsa-lib交叉编译

交叉编译出错:

 CC       dlmisc.lo
  CC       socket.lo
  CC       shmarea.lo
  CC       userfile.lo
  CC       names.lo
  CCLD     libasound.la
aarch64-linux-gnu-gcc: error: control/.libs/libcontrol.a: No such file or directory
aarch64-linux-gnu-gcc: error: mixer/.libs/libmixer.a: No such file or directory
aarch64-linux-gnu-gcc: error: pcm/.libs/libpcm.a: No such file or directory
aarch64-linux-gnu-gcc: error: timer/.libs/libtimer.a: No such file or directory
aarch64-linux-gnu-gcc: error: rawmidi/.libs/librawmidi.a: No such file or directory
aarch64-linux-gnu-gcc: error: hwdep/.libs/libhwdep.a: No such file or directory
aarch64-linux-gnu-gcc: error: seq/.libs/libseq.a: No such file or directory
aarch64-linux-gnu-gcc: error: ucm/.libs/libucm.a: No such file or directory
make[2]: *** [Makefile:494: libasound.la] Error 1

这是配置指令:

./configure \
        --enable-shared=yes \
        --enable-static=no \
        --host=aarch64-linux-gnu \
        CC=aarch64-linux-gnu-gcc \
        CXX=aarch64-linux-gnu-g++ \
        --prefix=$install_path

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-02 14:19
    关注

    引自免费微信小程序:皆我百晓生

    在交叉编译 ALSA-lib 时遇到的错误表明,链接器无法找到一些依赖库文件(.a 文件),这些库文件应由各个子模块编译生成。根据错误信息:

    aarch64-linux-gnu-gcc: error: control/.libs/libcontrol.a: No such file or directory
    ...
    aarch64-linux-gnu-gcc: error: ucm/.libs/libucm.a: No such file or directory
    

    这表示 control, mixer, pcm, timer, rawmidi, hwdep, seq, 和 ucm 子目录下的静态库没有成功编译或未正确放置到 .libs 目录下。

    解决这个问题,可以按照以下步骤进行排查和尝试:

    1. 检查配置过程: 确保在执行 ./configure 命令之前,已经正确设置了交叉编译工具链,并且环境变量已生效。您的配置指令看起来是正确的,但请确保 aarch64-linux-gnu-gccaarch64-linux-gnu-g++ 可执行文件存在于系统中并且可执行。

    2. 清理并重新配置构建: 在重新编译之前,先清理上一次编译遗留下来的中间文件和目标文件,以防干扰新的编译过程。

      make distclean
      ./configure \
          --enable-shared=yes \
          --enable-static=no \
          --host=aarch64-linux-gnu \
          CC=aarch64-linux-gnu-gcc \
          CXX=aarch64-linux-gnu-g++ \
          --prefix=$install_path
      
    3. 完整编译与安装流程: 执行 makemake install 应该会按顺序编译所有子模块。如果还是出现问题,请尝试分步编译,逐个进入对应的子目录完成编译后再回到主目录继续编译。

      make -j$(nproc)
      # 如果 make 失败,尝试手动编译每个子模块
      cd control && make && cd ..
      cd mixer && make && cd ..
      # ... 对其他子模块重复此操作
      cd .. # 返回到顶层目录
      make install
      
    4. 检查依赖和构建选项: 某些子模块可能需要额外的依赖或者特定的编译选项才能正确构建。请查阅 ALSA-lib 的官方文档或源代码树中的 README、INSTALL 文件了解是否有针对交叉编译的特殊说明。

    5. 环境问题: 确认当前工作目录结构正确,且所有必需的源码文件都已下载并解压到位。有时,由于网络原因或其他因素,源码包可能不完整,导致某些模块缺失。

    总之,对于这种类型的问题,通常建议从最基础的步骤开始排查,包括清理构建环境、检查交叉编译工具链、逐步编译和分析错误日志以定位具体出错点。同时,查阅 ALSA-lib 官方文档或社区论坛获得针对性的帮助也是十分重要的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭