Raspberry Pi で Nero AAC Codec(neroAacEnc)を使えるようにしてみた。
ただし、激遅である。
QEMU のビルド
Arch Linux ARM で i386 のバイナリを実行するためにまずは QEMU のビルドから始める。実用性が低いためか、Pacman にはまだ用意されていない。Raspbian や Ubuntu MATE for Raspberry Pi とかでも必要なパッケージをインストールしておけばビルドできる(はず。Ubuntu MATE は確認済み)。Python 2.x 必須。
git clone httpshttp://git.qemu.org/git/qemu.git mkdir qemu/build cd qemu/build ../configure --prefix=/opt/local/qemu --target-list=i386-linux-user --python=/usr/bin/python2 make make install
i386 の GNU C Library を用意する
i386 の GNU C Library が必要になるが、ビルドするのが少々面倒。i386 の Ubuntu などがあるならそこから引っ張ってくるという手もある。
ld-linux.so.2
どっかに無かったかな〜と思って locate
してみたら Chromium のソースディレクトリに入ってた。格納先のコードを見てみたら、どうやら Chromium のビルド用にバイナリ一式を引っ張って来るらしい。ということはこれでビルドの手間を省ける。
元々このソースは本家ではなく、Raspberry Pi の Arch Linux ARM 用として拾ってきたもの。https://aur.archlinux.org/packages/chromium-dev/ に行けば最新版が手に入る。Chromium 本家の方(https://chromium.googlesource.com/chromium/src.git/+/master/build/linux/)でもソースは入手できるが、別途、GYP が必要になる。AUR の方はバイナリがそのまま落ちてくるので楽。難点を挙げれば公式も AUR もファイルサイズがでかい。
AUR のソースの場合、install_script.py
を実行すれば chromium/build/linux/debian_wheezy_i386-sysroot
が出来るのであとはそれを拝借する。
cd build/linux/sysroot_scripts python2 install_script.py --arch i386
本家の方は GYP があれば恐らく AUR と同じようにバイナリが落ちてくるんだろうけど、そもそも install-sysroot.py
(https://chromium.googlesource.com/chromium/src/build/+/master/linux/sysroot_scripts/install-sysroot.py)にバイナリのダウンロードに必要な URL が書かれているのでそれを使った方が手っ取り早いし低コスト。
install-sysroot.py
内の subprocess.call
に合わせて書くとこんな感じになる。こちらと AUR の方では i386
と sysroot
の間が -
と _
という違いがあるのでパス補完を使わない人は注意した方がいいかもしれない。
curl --fail --retry 3 -L -O 'https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/24f935a3d8cdfcdfbabd23928a42304b1ffc52ba/debian_wheezy_i386_sysroot.tgz'
展開してあとは qemu-i386 -L /path/to/debian_wheezy_i386_syroot
とでもしておけばよい。
mkdir -p debian_wheezy_i386_sysroot tar xf debian_wheezy_i386_sysroot.tgz -C debian_wheezy_i386_sysroot
ツールチェインを切り替えることはあまり無いので自分の場合は alias
でツールチェインを固定している。-L
オプション以外に QEMU_LD_PREFIX
環境変数を使う方法もある。
alias qemu-i386="/opt/local/qemu/bin/qemu-i386 -L /opt/local/debian_wheezy_i386_sysroot"
今回、Raspberry Pi で i386 のプログラムを実行したかったのは CD の取り込みから WAV 抽出まで自動化したのに、AAC への変換で困っていたから。Libavcodec なんかのフリーの AAC コーデックだと音質があまり良くない(気がする)。本当は qaac で Apple の CoreAudio を使いたかったのだけど、Raspberry Pi で i386 の WINE を実行できる環境を構築するにはまだ時間が足りない。
Raspberry Pi 世界累計出荷台数1,000万台突破おめでとう!!