首頁 > 軟體

如何在Snap系統中進行交叉組合

2020-06-16 17:34:31

在這篇文章中,我們將介紹如何在snap系統中進行交叉組合來把我們的應用編譯並安裝到目標機器中.我們知道目前Snap支援ARM及x86晶片.在我們的Classic 16.04的系統中,我們很容易地編譯出我們想要的在x86上的snap檔案,但是我們如何生產為ARM板生產相應的armhf的snap檔案呢?

下面我們以樹莓派2板子為例來描述是如何實現的.

 

1)為樹莓派2安裝snap系統

 
我們可在地址下載最新的樹莓派2的image,並存於系統的~/Downloads目錄中.如果你是使用樹莓派3的話,那麼你可以在地址下載image.整個image的大小約為161M.
我們把我們的SD卡插入到我們電腦的MMC卡槽中,或插入到一個USB的adapter中.在進行拷貝image前,我們必須unmount我們的卡.然後,我們使用如下的命令來拷貝我們的image到卡中:
 
# Note: replace /dev/sdX with the device name of your SD card (e.g. /dev/mmcblk0, /dev/sdg1 ...)

xzcat ~/Downloads/all-snaps-pi2.img.xz | sudo dd of=/dev/sdX bs=32M
sync

等上面的操作完成後,拔出我們的SD卡,並插入到我們的樹莓派的SD卡插槽中.然後啟動我們的樹莓派.第一次的啟動的時間比較長,需要耐心等待.
 
 
注意:這裡的image名字"all-snaps-pi2.img.xz"可能會跟著版本的變化而發生改變.請根據你下載的具體的檔案來替換.這裡的sdX需要換成我們卡的裝置號,比如在我們的電腦的MMC插槽中就是mmcblk0:
 
 
在我們刷卡時,我們可以使用sudo fdisk -l,或lsblk來獲取我們的裝置的程式碼.注意在我們執行命令時,命令列中的"/dev/sdX"可以是/dev/sdb而不是/dev/sdb1,可能是 /dev/mmcblk0 而不是 /dev/mmcblk0p1.
 
 

2)連線我們的樹莓派裝置

 
如果大家有路由器的話,建議大家把樹莓派和自己的電腦同時連線到同一個路由器上.我們可以參閱文章"如何在裝上Snappy Ubuntu的樹莓派上啟動WiFi"來找到樹莓派上的IP地址.一旦得到樹莓派的IP地址,我們就可以通過如下的命令來完成和樹莓派的ssh連線.在電腦上打入如下的命令:
 
$ ssh Ubuntu@your_raspberry_pi_ip_address

在預設的情況下的密碼是"ubuntu".
 
 
一旦我們連線上我們的樹莓派,我們可以參照文章"安裝snap應用到Ubuntu 16.4桌面系統"來安裝和檢查我們的snap系統,比如:
 
 
 
 

3)交叉編譯我們的應用

 
 
在這一節中,我們來展示如何把我們的應用進行交叉編譯,並最終形成可以在我們的樹莓派上可以執行的snap包.
 
首先我們在樹莓派中安裝如下的叫做"classic"的應用:
 
$ sudo snap install classic --devmode --beta
 
然後,我們打入如下的命令:
 
$ sudo classic.create
$ sudo classic.shell
 

我們再打入如下的命令來更新我們的系統:
 
$ sudo apt-get update
 
 
我們可以把git安裝到系統中:
 
$ sudo apt install snapcraft git-core

這樣我們就安裝好了我們的系統,我們可以用這裡的環境來交叉編譯我們的任何一個snap應用.編譯後的snap包就可以直接在我們的樹莓派上直接執行:
 


編譯完我們的應以後,我們可以直接在我們的shell環境中安裝我們的應用:
 

 
我們通過如下的方法來安裝我們的應用:
 
$ sudo snap install webcam-webui_1_armhf.snap --devmode
 
這裡我們採用了--devmode,也就是說我們讓我們的應不受任何的安全機制的限制,就像我們以前的Ubuntu桌面上的應用一樣.在以後的章節中,我們必須通過interface來連線我們的plug及slot.camera的plug目前還沒有在樹莓派的image中.
 
 


至此,我們已經把我們的專案webcam-webui編譯為我們樹莓派可以使用的snap了.

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/134677.htm


IT145.com E-mail:sddin#qq.com