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