さくらインターネットスタンダードプランにcontext free artをインストールする

さくらインターネットスタンダードプランにcontext free artをインストールする試み。現状失敗。
スタンダードプランではなくVPSならおそらく簡単なのだろう。
まずbisonとflexが必要なのでインストールする

bisonのインストール

cd $HOME/local
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
tar zxvf bison-3.0.4.tar.gz
cd bison-3.0.4
./configure --prefix=$HOME/local
make
make install

特に問題なくインストール完了

flexのインストール

cd $HOME/local
wget http://downloads.sourceforge.net/project/flex/flex-2.6.0.tar.gz
tar zxvf flex-2.6.0.tar.gz
cd flex-2.6.0
./configure --prefix=$HOME/local
make
make install

こちらも特に問題なし・・・と思いきやmakeでエラーあり

TEXINPUTS="../build-aux:$TEXINPUTS"  MAKEINFO='/bin/sh $HOME/local/flex-2.6.0/build-aux/missing makeinfo   -I .'  texi2dvi --pdf --batch  --build-dir=flex.t2p -o flex.pdf   flex.texi
texi2dvi: not found
*** [flex.pdf] Error code 127

Stop in $HOME/local/flex-2.6.0/doc.
*** [all-recursive] Error code 1

texi2dviがないためエラーが出る。texinfoをインストールすればtexi2dviが手に入るが、texi2dviはtexをインストールしないと動かない。
参考:http://oshiete.goo.ne.jp/qa/8454708.html

texinfo自体は以下で簡単にインストールはできたが、結局使用しなかった。
texをインストールしたのになぜかうまくいかなかったため。

cd $HOME/local
wget http://ftp.gnu.org/gnu/texinfo/texinfo-6.3.tar.gz
tar zxvf texinfo-6.3.tar.gz
cd texinfo-6.3
./configure --prefix=$HOME/local
make
make install

しょうがないので、ドキュメントファイルをスキップしようとconfigureのオプションを調べてみたが、どうやらそんなオプションはなさそう。

./configure --prefix=$HOME/local --disable-docs

などとしてもダメ。Makefileを直接いじくってとばすことに。
Makefileの

SUBDIRS = \
	lib \
	src \
	doc \
	examples \
	po \
	tests \
	tools

の部分からdocを消す。ついでに

Making all in po
Error expanding embedded variable.
*** [all-recursive] Error code 1

こんな感じでpoも通らなかった。しかしpoは多言語化用のファイルでどうせjaはないので使わない。
http://d.hatena.ne.jp/blue-of-true/20080510/1210432444
こんな情報もあるが面倒なのでpoは消すことにした。
よって

SUBDIRS = \
	lib \
	src \
	examples \
	tests \
	tools

こんな感じ。

これでやっとmakeできるか・・・と思いきやautomake-1.15がないと文句を言われる。

cd $HOME/local
wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
tar zxvf automake-1.15.tar.gz
cd automake-1.15
./configure --prefix=$HOME/local
make
make install

ハイ、インストール。
期待せずにmakeするとやはりbison_nr_parser.cの57行目でsyntax error

/bin/sh ../build-aux/ylwrap bison_nr_parser.y y.tab.c bison_nr_parser.c y.tab.h `echo bison_nr_parser.c | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/  -e s/c++$/h++/ -e s/c$/h/` y.output bison_nr_parser.output -- byacc -d -p test
byacc: e - line 57 of "$HOME/local/flex-2.6.0/tests/bison_nr_parser.y", syntax error
%pure_parser
^
*** [bison_nr_parser.c] Error code 1

http://stackoverflow.com/questions/33537935/syntax-error-when-using-byacc
によると%pure_parserはFebruary, 2010以降にbyaccに加えられたらしい。つまりバージョンが古い。
byaccをインストールするとyaccが手に入るので、byaccにリンクする。

cd $HOME/local
wget ftp://invisible-island.net/byacc/byacc.tar.gz
tar zxvf byacc.tar.gz
cd byacc-20160606/
./configure --prefix=$HOME/local
make
make install
cd $HOME/local/bin
ln -s yacc byacc

ついにContext Free Artのインストールへ。

cd $HOME/local
wget http://www.contextfreeart.org/download/ContextFreeSource3.0.9.tgz
tar zxvf ContextFreeSource3.0.9.tgz
cd context-free-3.0.9
./configure --prefix=$HOME/local
make
make install

エラーが出る。

cc1plus: error: unrecognized command line option "-std=c++0x"

http://stackoverflow.com/questions/12795255/g-wont-compile-std-c0x-under-snow-leopard
によるとgcc v4.3以上の必要があるらしい。

しかしgccをインストールするにはGMP, MPFR, MPCが必要
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

GMPのインストール

gmpのために先にm4をインストールする必要がある

wget http://ftp.gnu.org/gnu/m4/m4-latest.tar.gz
tar zxvf m4-latest.tar.gz
cd m4-1.4.17
env PATH=${HOME}/local/bin:${PATH} ./configure --prefix=$HOME/local
make
make install
cd $HOME/local
wget https://gmplib.org/download/gmp/gmp-6.1.1.tar.bz2
tar jxf gmp-6.1.1.tar.bz2
cd 
cd gcc-6.2.0
env PATH=${HOME}/local/bin:${PATH} ./configure --prefix=$HOME/local
make
make install

MPFRのインストール

cd $HOME/local
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.4.tar.gz
tar zxvf mpfr-3.1.4.tar.gz
cd mpfr-3.1.4
env PATH=${HOME}/local/bin:${PATH} ./configure --prefix=$HOME/local --with-gmp-include=$HOME/local/include --with-gmp-lib=$HOME/local/lib
make
make install

MPCのインストール

cd $HOME/local
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
env PATH=${HOME}/local/bin:${PATH} ./configure --prefix=$HOME/local --with-gmp-include=$HOME/local/include --with-gmp-lib=$HOME/local/lib
env LD_LIBRARY_PATH=$HOME/local/lib gmake
env LD_LIBRARY_PATH=$HOME/local/lib gmake install

GCCのインストール

cd $HOME/local
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-6.2.0/gcc-6.2.0.tar.gz
tar zxvf gcc-6.2.0.tar.gz
cd gcc-6.2.0
./configure --prefix=$HOME/local --with-gmp-include=$HOME/local/include --with-gmp-lib=$HOME/local/lib
gmake
make install

Cntext Free Artのインストール(再度)

cd $HOME/local
wget http://www.contextfreeart.org/download/ContextFreeSource3.0.9.tgz
tar zxvf ContextFreeSource3.0.9.tgz
cd context-free-3.0.9
./configure --prefix=$HOME/local
env PATH=${HOME}/local/bin:${PATH} LD_LIBRARY_PATH=${HOME}/local/lib gmake

しかしエラー

 g++  -Isrc-common -Isrc-unix -Iobjs -Isrc-agg/include -Isrc-common/agg-extras -Isrc-ffmpeg/include -I/usr/local/include -O3 -Wall -march=native -Wno-parentheses -std=c++0x  -c -o objs/Rand64.o src-common/Rand64.cpp
In file included from src-common/Rand64.cpp:27:0:
src-common/myrandom.h: In constructor 'CF::binomial_distribution<_IntType>::param_type::param_type(CF::binomial_distribution<_IntType>::result_type, double)':
src-common/myrandom.h:406:30: error: 'lgamma' is not a member of 'std'
             __pr_ = std::exp(std::lgamma(__t_ + 1.) - std::lgamma(__r0_ + 1.) -
                              ^~~
src-common/myrandom.h:406:30: note: suggested alternative:
In file included from $HOME/local/include/c++/6.2.0/cmath:45:0,
                 from $HOME/local/include/c++/6.2.0/random:38,
                 from src-common/xorshift64star.h:31,
                 from src-common/Rand64.h:29,
                 from src-common/Rand64.cpp:26:
/usr/include/math.h:235:8: note:   'lgamma'
 double lgamma(double);
        ^~~~~~
In file included from src-common/Rand64.cpp:27:0:
src-common/myrandom.h:406:55: error: 'lgamma' is not a member of 'std'
             __pr_ = std::exp(std::lgamma(__t_ + 1.) - std::lgamma(__r0_ + 1.) -
                                                       ^~~
src-common/myrandom.h:406:55: note: suggested alternative:
In file included from $HOME/local/include/c++/6.2.0/cmath:45:0,
                 from $HOME/local/include/c++/6.2.0/random:38,
                 from src-common/xorshift64star.h:31,
                 from src-common/Rand64.h:29,
                 from src-common/Rand64.cpp:26:
/usr/include/math.h:235:8: note:   'lgamma'
 double lgamma(double);
        ^~~~~~
In file included from src-common/Rand64.cpp:27:0:
src-common/myrandom.h:407:32: error: 'lgamma' is not a member of 'std'
                                std::lgamma(__t_ - __r0_ + 1.) + __r0_ * std::log(__p_) +
                                ^~~
src-common/myrandom.h:407:32: note: suggested alternative:
In file included from $HOME/local/include/c++/6.2.0/cmath:45:0,
                 from $HOME/local/include/c++/6.2.0/random:38,
                 from src-common/xorshift64star.h:31,
                 from src-common/Rand64.h:29,
                 from src-common/Rand64.cpp:26:
/usr/include/math.h:235:8: note:   'lgamma'
 double lgamma(double);
        ^~~~~~
gmake: *** [objs/Rand64.o] Error 1

このエラーでいまに至る。どうしたものか。

メモ

env PATH=${HOME}/local/bin:${PATH} LD_LIBRARY_PATH=$HOME/local/lib g++  -Isrc-common -Isrc-unix -Iobjs -Isrc-agg/include -Isrc-common/agg-extras -Isrc-ffmpeg/include -I/usr/local/include -O3 -Wall -march=native -Wno-parentheses -std=c++0x  -c -o objs/cfdg.o src-common/cfdg.cpp
env PATH=${HOME}/local/bin:${PATH} LD_LIBRARY_PATH=${HOME}/local/lib CFLAGS=-march=i686 CPPFLAGS=-march=i686 ./configure --prefix=$HOME/local
env PATH=${HOME}/local/bin:${PATH} LD_LIBRARY_PATH=$HOME/local/lib CFLAGS="-march=corei7" gmake

参考サイト

LDFLAGS等の渡し方
http://unix.stackexchange.com/questions/149359/what-is-the-correct-syntax-to-add-cflags-and-ldflags-to-configure
GCCのインストールについて

http://yazawa-log.blogspot.jp/2010/09/1-centos55gcc451.html
makeとgmakeの違い、Need an operatorが出る場合
http://d.hatena.ne.jp/tullio/20090816/1250437536

シェアする

  • このエントリーをはてなブックマークに追加

フォローする