概要
- WSLにSH4のクロスコンパイル環境を構築
- OpenSSLのソースコードをSH4用のバイナリにコンパイルします。
実行環境
- Windows 10 Home 21H2
- WSL2
- Ubuntu 18.04.6 LTS
実行環境
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
SH4コンパイラのインストール
SH4のクロスコンパイラとしてgcc-sh4-linux-gnu
をインストールします。
また、make
などのツールチェインをインストールする為にbuild-essential
もインストールします。
インストール
$ sudo apt-get update
$ sudo apt-get install -y build-essential gcc-sh4-linux-gnu
動作確認
$ sh4-linux-gnu-gcc --version
sh4-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
OpenSSLのクロスコンパイル
記事の作成時点で最新のバージョン1.1.1o
をwget
を使ってダウンロードします。
ソースコードの入手・展開
$ wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz
$ tar xzf openssl-1.1.1o.tar.gz
$ cd openssl-1.1.1o/
MakeFileを作成する為の設定です。
linux-generic32
と--cross-compile-prefix=/usr/bin/sh4-linux-gnu-
は必須オプションです。
環境に合わせてMakeFileを作成
$ ./Configure linux-generic32 no-asm no-sse2 no-ssl3 no-zlib no-bf no-camellia no-cast \
no-cms no-comp no-dso no-idea no-md2 no-mdc2 no-rc2 no-rc5 no-ripemd no-seed -fPIC \
--cross-compile-prefix=/usr/bin/sh4-linux-gnu-
MakeFileが生成されたら、コンパイルを行います。
コンパイルを効率化するために、並列コンパイルの設定として-j
を付与します。
コンパイル
$ make -j$(grep -c ^processor /proc/cpuinfo)
(多少時間がかかります)
コンパイルが終了したら、SH4向けのバイナリが生成されていることを確認します。
バイナリの確認
$ file apps/openssl
apps/openssl: ELF 32-bit LSB executable, Renesas SH, version 1 (SYSV), dynamically linked,
interpreter /lib/ld-linux.so.2, BuildID[sha1]=(省略), for GNU/Linux 3.2.0, not stripped
$ file libssl.so.1.1
libssl.so.1.1: ELF 32-bit LSB shared object, Renesas SH, version 1 (SYSV), dynamically linked,
BuildID[sha1]=(省略), not stripped
$ file libcrypto.so.1.1
libcrypto.so.1.1: ELF 32-bit LSB shared object, Renesas SH, version 1 (SYSV), dynamically linked,
BuildID[sha1]=(省略), with debug_info, not stripped