web-dev-qa-db-ja.com

snapcraftクロスコンパイル

私はx86_64-linux-gnuマシンで、autotoolsを使用してarm-linux-gnueabihf(Raspberry Pi3)のソースからスナップショットを構築しようとしています。

私はスナップを構築することができますが、ストアにアップロードした後、サポートされているアーキテクチャは次のように常に表示されます:

サポートされているアーキテクチャ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'

Raspberry Pi用にAMD64のソースからスナップをパックする方法を知っている人はいますか?

3
V Bota

私は、snapcraftが異なるアーキテクチャ向けのコードをクロスコンパイルするオプションをまだ提供していないことをどこかで読んだと確信しています。

同じことをしたかったのですが、オートツールを使用してそれを行う方法がわかりませんでした。代わりに、Eclipseを使用してプロジェクトをビルドし、armhf用にビルドするように構成しました。後で、実行可能ファイルとアプリが動作するために必要なすべてのものを1つのフォルダーに配置し、plugin: dumpではなくplugin: autotoolsを使用しました。 Ubuntuストアに追加する場合は、architectures: [armhf]を追加する必要があります。私はあなたと同じメッセージを受け取りましたが、すでにスナップなしでコードをテストし、必要なものはすべてパッケージ化したので、無視しました。

あるいは、 Launchpad を見てみると、さまざまな環境向けにビルドするのに役立ちます。

2
Jasko

実行しました: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
0
Jack Nimble