#これは何?
以下2つの場合に読む備忘録
- 新しいUbuntuに古いLove2Dを入れる
- Ubuntuでtar ballをビルドする
#導入
Not Tetrisは一見するとTetrisのように見えるクソゲー。
クロスプラットフォームなフレームワークLove2D上で動作する。
Linuxでもできる落ちゲーと聞いてプレイしようとした……が、動作せず。
どうやらapt install love
で取得したLove2Dと、当時のバージョンに互換性がないらしい。仕方がないので、tar ballからビルドすることにした。
#前準備
###ビルド環境
- OS: Ubuntu 18.04.5 LTS
- ビルドツール一式は
apt install build-esseitial devscripts
でまとめて入っているものとする。 - buildflags.confを以下の内容で作成するのがおすすめ。
$HOME/.config/dpkg/buildflags.conf
APPEND CFLAGS -march=native -pipe
APPEND CXXFLAGS -march=native -pipe
###ソースコード
リンクからソースコードlove-0.7.2-linux-src.tar.gzを入手する。その後、作業用ディレクトリに展開する。
#仮ビルド
###仮Configure
-
./configure --help
を実行して、利用可能なオプションを眺めてみる。 -
./configure
を実行する。 - おそらくSDLが無い事で怒られるので、依存パッケージを入れる
configure.inやapt show love
等の内容を参考に、libdevil-dev, libfreetype6-dev, liblua5.1-0-dev, libsdl1.2-dev等々を入れていく。 - configureが成功するまで頑張る。
結果論だが./configure --enable-luajit
したらハマったので断念。
###仮Make
- 以下の内容でcfg0.sh(修正前)を作成して、実行する。
- make する。
- OpenGL周りでコンパイルエラーが出るので、以下のようにcfg0.shを修正する。
-
./cfg0.sh
→make
の順に実行し、コンパイルが通るまで頑張る。
cfg0.sh(修正前)
#!/bin/bash
export CFLAGS="-pipe -O0"
export CXXFLAGS="-pipe -O0"
./configure
cfg0.sh(修正後)
#!/bin/bash
export CPPFLAGS="-DGL_GLEXT_PROTOTYPES"
export CFLAGS="-pipe -O0"
export CXXFLAGS="-pipe -O0"
./configure
#本番ビルド+インストール
-
make clean
する。 -
dpkg-buildflags --export > cfg1.sh
とする。 - cfg1.shの適切な箇所に、
-DGL_GLEXT_PROTOTYPES
と./configure --prefix=/opt/love --program-suffix=-0.7.2
を追記する。 - cfg1してmakeして…(以下参照)
./cfg1
make
sudo make install
make clean