为树莓派交叉编译 bcm2835-1.42 库。

Posted

技术标签:

【中文标题】为树莓派交叉编译 bcm2835-1.42 库。【英文标题】:Cross Compile bcm2835-1.42 library for raspberry pi. 【发布时间】:2015-04-08 10:11:26 【问题描述】:

我正在尝试在 Ubuntu 中为我的树莓派板交叉编译库 bcm2835-1.42。 下载库并使用以下命令进行交叉编译:

wget http:www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz

tar -xvf bcm2835-1.42.tar.gz

cd bcm2835-1.42

./configure -host=arm -prefix=$(DEVELROOT) CC=arm-linux-gnueabihf-gcc-4.8 ar=arm-linux-gnueabihf-ar-4.8

制作

当我制作源代码时,我遇到了以下错误消息。

/tmp/ccxDzazg.s:汇编器消息:

/tmp/ccxDzazg.s:299: 错误:无效的屏障类型 -- dmb ldr r0,[r0] dmb' /tmp/ccxDzazg.s:365: Error: invalid barrier type --dmb str r1,[r0] dmb' /tmp/ccxDzazg.s:453: 错误: 无效的屏障类型 -- dmb ldr r0,[r0] dmb' /tmp/ccxDzazg.s:480: Error: invalid barrier type --dmb str r1,[r6] dmb' /tmp/ccxDzazg.s:644: 错误:无效的屏障类型 -- dmb str r1,[r0] dmb' /tmp/ccxDzazg.s:731: Error: invalid barrier type --dmb str r1,[r0] dmb' /tmp/ccxDzazg.s:807: 错误:无效的屏障类型 -- dmb str r1,[r0] dmb' /tmp/ccxDzazg.s:868: Error: invalid barrier type --dmb str r1,[r0] dmb'

【问题讨论】:

【参考方案1】:

解决,它可以与 bcm2835-1.44 库一起正常工作。

【讨论】:

【参考方案2】:

如果您不必使用 bcm2835-1.42 库,树莓派论坛上的this post 建议使用 QEMU,步骤如下:

将SD卡连接到主机,执行sudo fdisk -l并找到与您的SD卡大小匹配的磁盘 使用sudo mount /dev/XXXX /mntXXXX 是代表您的 SD 卡的标识符)安装 SD 卡 执行sudo apt-get install qemu qemu-user qemu-user-static安装qemu 使用sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin将模拟文件复制到SD卡 Chroot 进入 Pi 文件系统 sudo chroot /mnt 现在应该会提示您使用新的命令行,检查它是否与 root:/# gcc -v 一起使用 导航到要编译的项目并运行所需的 Makefile 或 gcc 或 ARM 构建工具,它将开始构建 完成后,输入这个退出 chroot exit 然后卸载设备sudo unmount /dev/sdc2

【讨论】:

以上是关于为树莓派交叉编译 bcm2835-1.42 库。的主要内容,如果未能解决你的问题,请参考以下文章

树莓派交叉编译(PS交叉编译链下载安装带WiringPi库交叉编译)

为树莓派 pi3 交叉编译 Qt 时出错

树莓派+QT5.9.9交叉编译(QT环境配置篇)

带wiringPi库的交叉编译

交叉编译C++树莓派标准错误

搭建树莓派交叉编译环境