目次

Ubuntu 18.04LTS の開発環境構築

MA-E3xx version 4.0 は Ubuntu18.04LTS を使用しているので、おなじライブラリをインストールできる環境を構築します。
クロスのライブラリもインストールすることになるので、別の開発環境を用意します。


Ubuntu18.04LTS(bionic) の環境作成

例として LXC で作成しますが、Docker や KVM などで作成してもかまいません。

ryzen7:~$ sudo lxc-create -n bionic64 -t ubuntu -- -r bionic
Checking cache download in /var/cache/lxc/bionic/rootfs-amd64 ... 
Installing packages in template: apt-transport-https,ssh,vim,language-pack-en,language-pack-ja
Downloading ubuntu bionic minimal ...
W: Target architecture is the same as host architecture; disabling QEMU support
I: Running command: debootstrap --arch amd64 --verbose --components=main,universe --include=apt-transport-https,ssh,vim,language-pack-en,language-pack-ja bionic /var/cache/lxc/bionic/partial-amd64 http://archive.ubuntu.com/ubuntu
I: Retrieving InRelease 
I: Checking Release signature
I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32)
... 略 ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.

Current default time zone: 'Etc/UTC'
Local time is now:      Wed Dec 26 03:57:58 UTC 2018.
Universal Time is now:  Wed Dec 26 03:57:58 UTC 2018.


##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
ryzen7:~$ 


環境ができたら、ユーザーの追加やネットワークなど、適切に設定しておきます。


パッケージの導入

Multiarch(armhf) の設定

マルチアーキテクチャサポート を有効化します。

bionic64:~$ sudo dpkg --add-architecture armhf
bionic64:~$ sudo dpkg --print-foreign-architectures
armhf


apt source の更新

armhf のパッケージを入手できるように、/etc/apt/sources.list を編集します。

sources.list
deb [arch=amd64] http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
deb [arch=amd64] http://security.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
 
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-updates main restricted universe multiverse
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-security main restricted universe multiverse


更新したら、update しておきます。

root@bionic64:~# apt update
ヒット:1 http://archive.ubuntu.com/ubuntu bionic InRelease
取得:2 http://ports.ubuntu.com/ubuntu-ports bionic InRelease [242 kB]                                  
取得:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]                             
取得:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]                     
取得:5 http://ports.ubuntu.com/ubuntu-ports bionic-updates InRelease [88.7 kB]                        
取得:6 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease [83.2 kB]
取得:7 http://ports.ubuntu.com/ubuntu-ports bionic/main armhf Packages [968 kB]
取得:8 http://ports.ubuntu.com/ubuntu-ports bionic/main Translation-ja [266 kB]
取得:9 http://ports.ubuntu.com/ubuntu-ports bionic/main Translation-en [516 kB]
取得:10 http://ports.ubuntu.com/ubuntu-ports bionic/restricted armhf Packages [8,360 B]
取得:11 http://ports.ubuntu.com/ubuntu-ports bionic/restricted Translation-en [3,584 B]
取得:12 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf Packages [8,269 kB]
取得:13 http://ports.ubuntu.com/ubuntu-ports bionic/universe Translation-en [4,941 kB]                 
取得:14 http://ports.ubuntu.com/ubuntu-ports bionic/universe Translation-ja [1,140 kB]                 
取得:15 http://ports.ubuntu.com/ubuntu-ports bionic/multiverse armhf Packages [129 kB]                 
取得:16 http://ports.ubuntu.com/ubuntu-ports bionic/multiverse Translation-en [108 kB]                 
取得:17 http://ports.ubuntu.com/ubuntu-ports bionic/multiverse Translation-ja [8,432 B]                
取得:18 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main armhf Packages [375 kB]               
取得:19 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main Translation-en [177 kB]               
取得:20 http://ports.ubuntu.com/ubuntu-ports bionic-updates/restricted armhf Packages [6,460 B]        
取得:21 http://ports.ubuntu.com/ubuntu-ports bionic-updates/restricted Translation-en [3,076 B]        
取得:22 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe armhf Packages [560 kB]           
取得:23 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe Translation-en [171 kB]           
取得:24 http://ports.ubuntu.com/ubuntu-ports bionic-updates/multiverse armhf Packages [3,128 B]        
取得:25 http://ports.ubuntu.com/ubuntu-ports bionic-updates/multiverse Translation-en [3,356 B]        
取得:26 http://ports.ubuntu.com/ubuntu-ports bionic-security/main armhf Packages [155 kB]              
取得:27 http://ports.ubuntu.com/ubuntu-ports bionic-security/main Translation-en [88.9 kB]             
取得:28 http://ports.ubuntu.com/ubuntu-ports bionic-security/universe armhf Packages [109 kB]          
取得:29 http://ports.ubuntu.com/ubuntu-ports bionic-security/universe Translation-en [62.2 kB]         
取得:30 http://ports.ubuntu.com/ubuntu-ports bionic-security/multiverse armhf Packages [644 B]         
取得:31 http://ports.ubuntu.com/ubuntu-ports bionic-security/multiverse Translation-en [996 B]         
18.7 MB を 13秒 で取得しました (1,400 kB/s)                                                            
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
パッケージはすべて最新です。
root@bionic64:~# 


開発ツールの導入

root@bionic64:~# apt install build-essential
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  cpp cpp-7 dirmngr dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base gnupg gnupg-l10n gnupg-utils gpg
  gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libasn1-8-heimdal libassuan0 libcilkrts5
  libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-7-dev libgdbm-compat4 libgdbm5
  libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal
  libkrb5-26-heimdal libksba8 libldap-2.4-2 libldap-common libnpth0 libperl5.26 libroken18-heimdal
  libsasl2-2 libsasl2-modules libsasl2-modules-db libstdc++-7-dev libubsan0 libwind0-heimdal make
  patch perl perl-modules-5.26 pinentry-curses
提案パッケージ:
  cpp-doc gcc-7-locales dbus-user-session pinentry-gnome3 tor debian-keyring g++-multilib
  g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib autoconf automake libtool flex bison gdb
  gcc-doc gcc-7-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan4-dbg liblsan0-dbg
  libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg parcimonie xloadimage
  scdaemon git bzr gdbm-l10n libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
  libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql libstdc++-7-doc make-doc ed
  diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl pinentry-doc
以下のパッケージが新たにインストールされます:
  build-essential cpp cpp-7 dirmngr dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base gnupg gnupg-l10n
  gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libasn1-8-heimdal libassuan0 libcilkrts5
  libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-7-dev libgdbm-compat4 libgdbm5
  libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal
  libkrb5-26-heimdal libksba8 libldap-2.4-2 libldap-common libnpth0 libperl5.26 libroken18-heimdal
  libsasl2-2 libsasl2-modules libsasl2-modules-db libstdc++-7-dev libubsan0 libwind0-heimdal make
  patch perl perl-modules-5.26 pinentry-curses
アップグレード: 0 個、新規インストール: 56 個、削除: 0 個、保留: 0 個。
37.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 164 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
... 略 ...


クロスコンパイラを導入します。

root@bionic64:~# apt install gcc-multilib-arm-linux-gnueabihf g++-multilib-arm-linux-gnueabihf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  binutils binutils-arm-linux-gnueabihf binutils-common binutils-x86-64-linux-gnu cpp-7
  cpp-7-arm-linux-gnueabihf g++-7 g++-7-arm-linux-gnueabihf gcc-7 gcc-7-arm-linux-gnueabihf
  gcc-7-arm-linux-gnueabihf-base gcc-7-cross-base lib32asan5 lib32atomic1 lib32gcc-7-dev lib32gcc1
  lib32gomp1 lib32itm1 lib32mpx2 lib32quadmath0 lib32stdc++-7-dev lib32stdc++6 lib32ubsan1 libasan5
  libasan5-armhf-cross libatomic1 libatomic1-armhf-cross libbinutils libc-dev-bin
... 略 ...


git を導入しておきます。

root@bionic64:~# apt install git
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  git-man libcurl3-gnutls liberror-perl libnghttp2-14 libpsl5 librtmp1 publicsuffix
提案パッケージ:
  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb
  git-cvs git-mediawiki git-svn
以下のパッケージが新たにインストールされます:
  git git-man libcurl3-gnutls liberror-perl libnghttp2-14 libpsl5 librtmp1 publicsuffix
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 0 個。
5,217 kB のアーカイブを取得する必要があります。
この操作後に追加で 35.2 MB のディスク容量が消費されます。
続行しますか? [Y/n] 


Oracle Java 11 の導入

後ほどビルドする OpenJDK の容量削減に jlink を使用するため、JDK をインストールしておきます。
まず、add-apt-repository コマンドを使用できるようにパッケージを導入します。

root@bionic64:~# apt install software-properties-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  iso-codes powermgmt-base python-apt-common python3-apt python3-software-properties
  unattended-upgrades
提案パッケージ:
  isoquery python3-apt-dbg python-apt-doc bsd-mailx default-mta | mail-transport-agent needrestart
以下のパッケージが新たにインストールされます:
  iso-codes powermgmt-base python-apt-common python3-apt python3-software-properties
  software-properties-common unattended-upgrades
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
2,810 kB のアーカイブを取得する必要があります。
この操作後に追加で 20.8 MB のディスク容量が消費されます。
続行しますか? [Y/n] 


PPA を追加します。

root@bionic64:~# add-apt-repository ppa:linuxuprising/java
 Oracle Java 11 installer

Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java 11, so a working Internet connection is required.

The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java

Created for users of https://www.linuxuprising.com/

Installation instructions (with tips and tricks), feedback, suggestions, bug reports etc.: https://www.linuxuprising.com/2018/10/how-to-install-oracle-java-11-in-ubuntu.html

About Oracle Java 10: This version reached the end of public updates, therefore it's no longer available for download. The Oracle Java 10 packages in this PPA no longer worked due to this, so I have removed them. Switch to Oracle Java 11 or OpenJDK 11 instead, which is long term support.
 詳しい情報: https://launchpad.net/~linuxuprising/+archive/ubuntu/java
[ENTER] を押すと続行します。Ctrl-c で追加をキャンセルできます。

取得:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
ヒット:2 http://archive.ubuntu.com/ubuntu bionic InRelease                                             
取得:3 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic InRelease [15.9 kB]                   
ヒット:4 http://ports.ubuntu.com/ubuntu-ports bionic InRelease                                         
取得:5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]                             
ヒット:6 http://ports.ubuntu.com/ubuntu-ports bionic-updates InRelease                                 
ヒット:7 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease                                
取得:8 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic/main amd64 Packages [1,452 B]         
取得:9 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic/main Translation-en [604 B]           
190 kB を 2秒 で取得しました (102 kB/s)                         
パッケージリストを読み込んでいます... 完了


Oracle Java 11 をインストールします。

root@bionic64:~# apt install oracle-java11-installer
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  gsfonts gsfonts-x11 java-common libfontenc1 libfreetype6 libpng16-16 oracle-java11-set-default wget
  x11-common xfonts-encodings xfonts-utils
提案パッケージ:
  binfmt-support visualvm ttf-baekmuk | ttf-unfonts | ttf-unfonts-core ttf-kochi-gothic
  | ttf-sazanami-gothic ttf-kochi-mincho | ttf-sazanami-mincho ttf-arphic-uming firefox | firefox-2
  | iceweasel | mozilla-firefox | iceape-browser | mozilla-browser | epiphany-gecko | epiphany-webkit
  | epiphany-browser | galeon | midbrowser | moblin-web-browser | xulrunner | xulrunner-1.9
  | konqueror | chromium-browser | midori | google-chrome
以下のパッケージが新たにインストールされます:
  gsfonts gsfonts-x11 java-common libfontenc1 libfreetype6 libpng16-16 oracle-java11-installer
  oracle-java11-set-default wget x11-common xfonts-encodings xfonts-utils
アップグレード: 0 個、新規インストール: 12 個、削除: 0 個、保留: 0 個。
4,698 kB のアーカイブを取得する必要があります。
この操作後に追加で 8,520 kB のディスク容量が消費されます。
続行しますか? [Y/n]