【问题标题】:Compiling alsa-lib with Buildroot: C preprocessor fails sanity check使用 Buildroot 编译 alsa-lib:C 预处理器未通过完整性检查
【发布时间】:2012-12-19 00:01:24
【问题描述】:

尝试使用 Buildroot 为 LPC3250 ARM 编译 Linux 映像。 库存设置,它编译得很好。 当我尝试添加 alsa-lib 和 alsa-utils 时出现此错误:

configure: error: in `/home/user/projects/buildroot/output/build/alsa-lib-1.0.26                                                                ':
configure: error: C preprocessor "/home/user/projects/buildroot/output/host/usr/                                                                bin/arm-buildroot-linux-uclibcgnueabi-cpp" fails sanity check
See `config.log' for more details

alsa-lib 的 config.log 的摘录。这有点糟糕,因为一半的错误消息由于某种原因被切断了:

    /home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/features.h:219:5: error: #error It appears you have defined _FILE_OF$
In file included from /home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:72,
                 from conftest.c:12:
/home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/uClibc_stdio.h:61:2: error: #error Sorry... uClibc was built wi$
In file included from conftest.c:12:
/home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:83: error: expected '=', ',', ';', 'asm' or '__attribute__' $
In file included from conftest.c:12:
/home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:721: error: expected declaration specifiers or '...' before $
/home/user/projects/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:723: error: expected ';', ',' or ')' before '*' token

类似的问题here 说了一些关于“取消设置”CPP 和 CPPFlags 的内容。 不确定我会在哪里执行此操作或在 Buildroot 环境中检查它。我不确定这是否是同一个问题。我猜它不相关,因为在另一个问题中它正在谈论编译 GCC,而我没有这样做。

我现在的第一个预感是我必须编辑 lib-alsa 的配置文件。我只是不确定要进行哪些编辑。

编辑:做了一些激进的谷歌搜索并想出了我认为是我的错误之一的完整版本:...features.h:329:2: #error It appears you have defined _FILE_OFFSET_BITS=64. Unfortunately, uClibc was built without large file support enabled. 检查了我的 uClibc 配置文件,UCLIBC_HAS_LFS=y 存在。 ???

【问题讨论】:

    标签: linux buildroot


    【解决方案1】:

    这里问题的根源是 Buildroot 使用位于:output/toolchain/uClibc-0.9.33.2/.config 的 uClibc 配置文件

    而不是在 Buildroot 配置菜单中指定的 toolchain/uClibc/uClibc-0.9.33.config

    我运行make uclibc-menuconfig(默认将配置保存在.config 中)并选择General Library Settings->Large File Support,一切都编译得很好。

    【讨论】:

      【解决方案2】:

      嗯,output/toolchain/uClibc-0.9.33.2/.config 是在 Buildroot 配置和构建 uClibc 时从 toolchain/uClibc/uClibc-0.9.33.config 生成的。所以使用output/toolchain/uClibc-0.9.33.2/.config 作为uClibc 配置没有任何意义。您应该保留默认值 toolchain/uClibc/uClibc-0.9.33.config

      关于大文件支持,通常所有的包都对它有适当的依赖。因此,如果一个包需要大文件支持,则必须在 Buildroot 中启用大文件支持后才能选择该包。如果不是这种情况,那么这是一个错误,Buildroot 社区会对此有兴趣的错误报告(其中详细说明了 Buildroot 版本、正在使用的 Buildroot 配置文件以及您得到的构建错误) .

      现在,如果确实需要大文件支持,您应该在 Buildroot 级别而不是在 uClibc 级别启用它。如果您仅在 uClibc 级别启用它,那么 Buildroot 现在不会对此进行处理,并且不会向您显示所有依赖于大文件支持的包。

      因此,您应该在 Buildroot 中启用 BR2_TOOLCHAIN_BUILDROOT_LARGEFILE 配置选项,然后进行完整的重建:make clean all

      【讨论】:

      • 感谢您的回答 - 我使用的是夜间版本的 buildroot,而不是稳定版本。不过,我玩这个已经有一段时间了。我会再次检查它,看看这是否是一个错误。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-02-09
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多