歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何在Snap系統中進行交叉匯編

如何在Snap系統中進行交叉匯編

日期:2017/2/28 13:49:30   编辑:Linux教程

在這篇文章中,我們將介紹如何在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了.
Copyright © Linux教程網 All Rights Reserved