よへう
よへう
rasperry pi zeroにdietpiを入れて、安くなっていたDACポタアンにつないで持ち運んでいます。リポ電池の持ちがよくていい旅夢気分ですがプツプツノイズ対策に悪戦苦闘しています。 …

日記

最新の日記
カレンダー
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

最新のレス

日記

日記へのレスはありません

製品レビュー/コメント

製品レビュー/コメントへのレスはありません

お気に入り製品

お気に入り製品はありません

お気に入りユーザー

お気に入りユーザーはありません

お気にいられユーザー

お気に入られユーザーはありません

最新の日記

mpd.0.21.21のビルド

mpdのホームページでdebianが煽られていた。

Note Debian and Ubuntu are infamous for shipping heavily outdated software. The MPD version in their respective stable releases are usually too old to be supported by this project. Ironically, the MPD version in Debian “unstable” is more stable than the version in Debian “stable”.
引用元「User’s Manual - Music Player Daemon 0.22 documentation

はえ〜と思って、RPI zero(dietpi)に最新のmpd.0.21.21をビルドしようとしたら、mesonとかninjaとかが出てきてよくわからなくて詰まったのでメモ。


==========やった作業==========


○適当な作業ディレクトリを作ってmpdのソースをダウンロード
mkdir mpd
cd mpd
wget https://www.musicpd.org/download/mpd/0.21/mpd-0.21.21.tar.xz


○tarを展開
tar xf mpd-0.21.21.tar.xz
cd mpd-0.21.21/


○必要なライブラリ等をaptでインストールする
apt install meson g++ \
libpcre3-dev \
libmad0-dev libmpg123-dev libid3tag0-dev \
libflac-dev libvorbis-dev libopus-dev libogg-dev \
libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \
libfluidsynth-dev libgme-dev libmikmod-dev libmodplug-dev \
libmpcdec-dev libwavpack-dev libwildmidi-dev \
libsidplay2-dev libsidutils-dev libresid-builder-dev \
libavcodec-dev libavformat-dev \
libmp3lame-dev libtwolame-dev libshine-dev \
libsamplerate0-dev libsoxr-dev \
libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
libzzip-dev \
libcurl4-gnutls-dev libyajl-dev libexpat-dev \
libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
libpulse-dev libshout3-dev \
libsndio-dev \
libmpdclient-dev \
libnfs-dev libsmbclient-dev \
libupnp-dev \
libavahi-client-dev \
libsqlite3-dev \
libsystemd-dev \
libgtest-dev \
libboost-dev \
libicu-dev \
libchromaprint-dev \
libgcrypt20-dev

 →脳死していたので自分が必要としていないものも入ってる。


○ffmpegとFDK-AACのビルド
 →あの「new_western_elec」さんのブログの内容をそのまま実行するだけなので省略。ffmpeg使わない人はいらないかも。
  https://nw-electric.way-nifty.com/blog/2018/02/aacmpd-fdk-aac-.html


○mesonでコンパイルの設定(たぶん./configureみたいな感じ)
CFLAGS="-O2 -march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp" CXXFLAGS="-O2 -march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp" meson . output/release --buildtype=debugoptimized -Db_ndebug=true

 →CFLAGSとかCXXFLAGSのオプションはRPI Zeroに最適化するための設定らしい。細かい意味については「ARM® コンパイラ ソフトウェア開発ガイド」ってのを読んだけど理解できなかった(脳死)。
 →RPI2/RPI3最適化の設定は「new_western_elec」さんのブログの内容がそのまま使えると思うのでありがとうございます。
  https://nw-electric.way-nifty.com/blog/2016/08/mpdpi-2-pi-3-5a.html
 
 →実行結果としてYesとかNoとかがいっぱい出力される。途中Boost1.67はウンチだよって煽られる。aptだとBoost1.67までしかなくて悲しいので1.72をビルドしてパスを通したがこの煽り文は消えなかった。(boostのビルドは「https://qiita.com/forno/items/11c4a0f8169d987f232b」がわかりやすかった)
WARNING: Your Boost version 1.67 is known to be buggy, and the MPD build will fail. Please upgrade to Boost 1.68 or later.

 →もっかい設定が必要な場合は --reconfigureオプションをつければ実行できる。


○コンパイルオプションの確認
meson configure output/release

 →実行するとドバッと設定値がでてくる。


○コンパイルオプションの設定
 →上記で確認した設定を変える場合は「meson configure output/release -D[option名]=[value値]」で設定値を変更できる。
 →以下は自分の設定。ただし、MPD.0.22のマニュアルをみるとmpd.confのdecoderの設定でpluginを個別にdisableできるみたいなので、コンパイル時に設定する必要はなかったかも。

meson configure output/release -Ddatabase=true -Dlibmpdclient=enabled -Dalsa=enabled \
-Dcurl=enabled -Ddsd=true -Dffmpeg=enabled -Dflac=enabled -Dgme=enabled \
-Did3tag=enabled -Dsoundcloud=disabled -Dlame=enabled -Dmad=enabled \
-Dmpg123=enabled -Dpipe=false -Drecorder=true -Dshout=enabled \
-Dvorbis=enabled -Dwave_encoder=true -Dwavpack=enabled -Dhttpd=true \
-Dsoxr=disabled -Dzeroconf=disabled \
-Dbzip2=disabled -Dzzip=disabled -Dfluidsynth=disabled \
-Dwildmidi=disabled -Djack=disabled -Dao=disabled -Doss=disabled \
-Dipv6=disabled -Dpulse=disabled -Dnfs=disabled -Dsmbclient=disabled \
-Dupnp=disabled -Dexpat=disabled -Dlibsamplerate=disabled \
-Dsndfile=disabled -Daudiofile=disabled -Dsidplay=disabled

 →あとでわかったのたけど、sysconfdirの値がetcのままになっていたせいで、mpd.confを探しに行くのが /usr/local/etc/下になってしまって/etc/mpd.confを見にいってくれなかったので、ここだけ変えればよかった。


○コンパイルする
ninja -C output/release


○インストールする
ninja -C output/release install


○mpd.confのシンボリックリンクをはる
 ln -s /etc/mpd.conf /usr/local/etc/mpd.conf
 →上記sysconfdirの設定を変えてない + 以前のver.のmpd.conf をそのまま使いたい場合は実行。
 →以前のver.と分けたい場合はcpでいいとおもう。


○mpd.serviceの設定変更
 →自動起動の設定をしているのなら/usr/bin/mpdだと古いver.のままなので/usr/local/bin/mpdに書き換え。


○動く
 →動く

==========ここまで==========



反省:
これ最終的にはMPDのマニュアルをそのまま実行すればよかった気が。。。



勉強させていただきました:
「User’s Manual - Music Player Daemon 0.22 documentation」
https://www.musicpd.org/doc/html/user.html
 「Compiling from source」のセクションがこの日記の内容

「MPD 0.21.1のコンパイル方法が変わりました その1 〜 6: ささやき」
http://blog.livedoor.jp/sasayakimasuyo/archives/54392386.html
http://blog.livedoor.jp/sasayakimasuyo/archives/54392484.html
http://blog.livedoor.jp/sasayakimasuyo/archives/54392519.html
http://blog.livedoor.jp/sasayakimasuyo/archives/54392566.html
http://blog.livedoor.jp/sasayakimasuyo/archives/54392647.html
http://blog.livedoor.jp/sasayakimasuyo/archives/54392730.html
 この素晴らしいブログのパクリがこの日記の内容

「Compiler options - Raspberry Pi Forums」
https://www.raspberrypi.org/forums/viewtopic.php?t=11629
「Rasberry Piのコンパイル最適化のオプション - Connecting The Dots」
https://tai1-mo.blogspot.com/2014/02/rasberry-pi.html
 RPI zero最適化のコンパイラオプションについてはここをみた

「AACを最高の音質で聴くためのMPDコンパイル FDK-AAC-0.1.5: new_western_elec」
https://nw-electric.way-nifty.com/blog/2018/02/aacmpd-fdk-aac-.html
 mpd向けのコンパイルオプションはここをみた
 (ffmpegのインストールもここをみた)

「ストレスフリーにUbuntuでc++20のために最新のg++, Cmake, Boostを導入する - Qiita」
https://qiita.com/forno/items/11c4a0f8169d987f232b
 boostのビルドはここをみた

最新のレビュー/コメント

レビューはありません

マイルーム

マイルームは公開されていません

所有製品

所有製品は登録されていません