さくらインターネットスタンダードプランに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