![snapcraft 交叉编译](https://linux22.com/image/890743/snapcraft%20%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91.png)
我在一台 x86_64-linux-gnu 机器上,尝试使用自动工具为 arm-linux-gnueabihf(Raspberry Pi3)从源代码构建一个 snap。
我设法构建了 snap 但是在上传到商店后它总是说支持的架构是:
支持的体系结构 amd64
我的 snapcraft.yaml 如下所示:
name: hellocsnap
version: '1.17'
summary: Hello World snap written in C
description: This snap says hello and adds 2 numbers.
grade: stable
confinement: strict
apps:
hello:
command: hellocsnap
parts:
test-hellocsnap:
plugin: autotools
configflags:
- --build=x86_64-linux-gnu
- --host=arm-linux-gnueabihf
source: source/
运行时snapcraft
出现以下错误:
Priming test-hellocsnap
Unable to determine library dependencies for b' /home/..../prime/bin/hellocsnap'
有人知道如何在 amd64 上为 Raspberry Pi 从源代码打包 snap 吗?
答案1
我很确定我在某处读到过 snapcraft 尚未提供针对不同架构交叉编译代码的选项。
我想做同样的事情,但不知道如何使用自动工具来做。相反,我使用 eclipse 来构建我的项目并将其配置为针对 armhf 构建。后来,我将可执行文件和应用程序运行所需的一切放在一个文件夹中,并使用plugin: dump
而不是plugin: autotools
。如果您打算将其添加到 Ubuntu 商店,则需要添加architectures: [armhf]
。我收到了与您相同的消息,但我已经在没有 snap 的情况下测试了代码,并且我知道我打包了我需要的一切,所以我只是忽略了它。
或者你可以看看发射台它可以帮助您为各种环境构建它。
答案2
我确实运行了:snapcraft build --target-arch=armhf
整个过程运行顺利,没有出现任何错误。但是,它并没有像预期的那样创建 hello_2.10_armhf.snap 包。
snapcraft.yaml:
name: hello
version: '2.10'
summary: GNU Hello, the "hello world" snap
description: |
GNU hello prints a friendly greeting.
grade: devel
confinement: devmode
parts:
gnu-hello:
source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
plugin: autotools