MediatombをDebian jessieでコンパイルするとエラーに

Debian 8.0 jessieでMediaTombをコンパイルするとうまくコンパイルができない。割とありがちなgccの絡みらしい。とりあえずぐぐった事をベースにパッチを書く。

../src/zmm/object.h:51:39: error: expected ‘)’ before ‘size’
static void* operator new (size_t size);
^
Makefile:1394: recipe for target 'libmediatomb_a-autoscan.o' failed
make[2]: *** [libmediatomb_a-autoscan.o] Error 1
make[2]: Leaving directory '/usr/local/src/mediatomb-0.12.1/build'
Makefile:434: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/usr/local/src/mediatomb-0.12.1'
Makefile:360: recipe for target 'all' failed
make: *** [all] Error 2
../src/hash/dbo_hash.h:139:26: note: use ‘this->search’ instead
Makefile:1408: recipe for target 'libmediatomb_a-autoscan_inotify.o' failed
make[2]: *** [libmediatomb_a-autoscan_inotify.o] Error 1
make[2]: Leaving directory '/usr/local/src/mediatomb-0.12.1/build'
Makefile:434: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/usr/local/src/mediatomb-0.12.1'
Makefile:360: recipe for target 'all' failed
make: *** [all] Error 2

パッチはこちら。mediatomb-0.12.1-gcc.patch

パッチ適用+コンパイルは概ね下記のような感じ。

$ wget -O mediatomb-0.12.1.tar.gz? "http://downloads.sourceforge.net/project/mediatomb/MediaTomb/0.12.1/mediatomb-0.12.1.tar.gz?r=http%3A%2F%2Fmediatomb.cc%2Fpages%2Fdownload&ts=1471868024&use_mirror=jaist"
$ wget -O mediatomb-0.12.1-gcc.patch "http://blog.nogisawa.net/wp-content/uploads/2016/08/mediatomb-0.12.1-gcc.patch_.txt"
$ tar zvxf mediatomb-0.12.1.tar.gz
$ patch -p0 < mediatomb-0.12.1-gcc.patch
$ cd mediatomb-0.12.1
$ ./configure --prefix=/usr/local
$ make
$ su -
# make install

あとSystemdに登録する時は/etc/systemd/system/mediatomb.serviceというファイルを新規で作成。下記のような内容を書き込んでsystemd enable mediatombをすると登録される。
(mediatombユーザーも作成)

[Unit]
Description = MediaTomb

[Service]
ExecStart = /usr/local/bin/mediatomb -c /etc/mediatomb/config.xml -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb.log -p 50500
Restart = always
KillMode = process

[Install]
WantedBy = multi-user.target

 

ちなみに一度登録するとmediatomb.serviceを書き換えても反映されないので一旦disableで登録を解除してからenableで再登録する必要があるらしい。

コメントを残す