snapcraft 交叉编译

snapcraft 交叉编译

我在一台 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

相关内容