mieki256's diary



2017/11/15(水) [n年前の日記]

#3 [raspberrypi][love2d] raspbian jessie上でSDL2とlove2dをビルド

pilove も retropie-setup も raspbian jessie 上で動かせなかったので、仕方なく以前と同様の手順でビルド。SDL2は OpenGL を無効にしてビルドすることで、Raspberry Pi の OpenGL ES を使って描画できるようにする。

SDL2のビルド。 :

_Golang と SDL2 でゲームを作る - KaoriYa
_SDL2-2.0.6 on Raspberry Pi - ChoccyHobNob

sudo aptitude install automake build-essential mercurial qt5-default libtool libasound2-dev libaudio-dev libesd0-dev libsndfile1-dev libmodplug-dev libopenal-dev libfontconfig1-dev libpango1.0-dev freeglut3-dev libfreeimage-dev libjpeg-dev libtiff5-dev libwebp-dev libxcursor-dev libxi-dev libxrandr-dev libxss-dev libudev-dev libsmpeg-dev libxinerama-dev
mkdir ~/sdl2
cd ~/sdl2
wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz
tar xzf SDL2-2.0.5.tar.gz
cd SD2-2.0.5
mkdir build && cd build

configure をする段階で、--host=arm-raspberry-linux-gnueabihf をつけたり外したりしてみた。
../configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : dummy opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO

どうやら、--host=arm-raspberry-linux-gnueabihf をつけて configure しないと、Video driver に rpi が出てこない模様。このオプションは必須っぽいな…。

ちなみに、「--disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl」の指定で、OpenGL を無効にしているらしい。

raspbian jessie ではなく、raspbian stretch + SDL2-2.0.5 で configure した場合の結果は以下。
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic) sndio
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : YES
Using fcitx     : NO

raspbian jessie上で configure した時と違って、Audio に、sndio というのがついてる。libsndio-dev をアンインストールしたほうがいいのかな。
sudo aptitude remove libsndio-dev

libsndio-dev をアンインストールした状態で configure すると以下になった。
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : YES
Using fcitx     : NO

makeしてインストール。
make
sudo make install

love2dをビルド。 :

各ページを眺めながら、必要になりそうなパッケージを列挙してインストール。

_Building LOVE (日本語) - LOVE
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev

sudo aptitude install autotools-dev automake libtool libdevil-dev libogg-dev libflac-dev libflac++-dev libmng-dev

# raspbian jessie
sudo aptitude install libturbojpeg1-dev

# raspbian stretch
sudo aptitude install libturbojpeg0-dev

_pilove/build-love2d.sh at master - skarbat/pilove
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev

sudo aptitude install devscripts git-core debhelper dh-autoreconf libasound2-dev libudev0 libudev-dev libdbus-1-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev libxss-dev libxt-dev libxxf86vm-dev libgl1-mesa-dev libpulse-dev libibus-1.0-dev pulseaudio libraspberrypi-dev

love2d 0.10.2 の Linux用ソースをDLしてビルドする。
mkdir ~/love2d
cd ~/love2d
wget https://bitbucket.org/rude/love/downloads/love-0.10.2-linux-src.tar.gz
tar zxf love-0.10.2-linux-src.tar.gz
cd love-0.10.2
./configure
make
sudo make install

動作確認の結果。 :

love で実行。例の画面が出た。

サウンドを鳴らすソースを与えて動作確認してみた。以下のような警告が表示されたものの、音が鳴った。…やった! 鳴ったぞ! ようやく音が聞こえたわ…。
AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"

つまり、raspbian jessie上で SDL2 や love2d をビルドする分には、ちゃんと音が鳴ることが分かった。Raspberry Pi + love2d は音が鳴らない、というわけではないらしい。

しかし、raspbian stretch でやると音が鳴らないわけで…。SDL2、もしくはlove2dは、raspbian stretch に未対応ということだろうか? love2d を使いたいなら、raspbian jessie を使うしかない?

それとも pulseaudio が絡んでたりするのだろうか。例えば pilove の公式サイト上に書いてあるとおりに、
pulseaudio --start
とやってから love2d を動かすと、音が鳴らなくなるし…。
pulseaudio --kill
とやってから再度試したら音が鳴ったし…。

pulseaudio ってそもそも何なのでしょうか。ググって各説明ページを眺めてみてもピンとこない。Linuxのサウンドシステム関係はよく分からんなあ…。いや、Windowsのサウンド関係もちゃんと分かってるわけでもないけれど。

raspbianはバージョンによってpulseaudioの扱いが違う。 :

raspbian関係の記事をググってたら気になる話が。raspbian jessie までは、Bluetooth から音を鳴らすために標準で pulseaudio がインストールされていたけど、raspbian stretch では別の何かを使って Bluetooth から音を鳴らせるようになったので pulseaudio は標準でインストールされていないらしい。

_Raspbian StretchではPulseaudioを使わなくなったのでxrdpのサウンドをどうするか思案中
_Raspbian Stretch has arrived for Raspberry Pi - Raspberry Pi

そのあたりが関係してるのかな…。

以上です。

過去ログ表示

Prev - 2017/11 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project