2

尝试使用 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

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

我现在的 #1 预感是我必须编辑 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存在。???

4

2 回答 2

2

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

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

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

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

于 2013-01-09T08:08:10.163 回答
2

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

而不是toolchain/uClibc/uClibc-0.9.33.configBuildroot 配置菜单中指定的。

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

于 2012-12-19T06:07:25.573 回答