GNU Bisonのインストール

パーサージェネレーターの一種であるGNU Bisonをソースコードからインストールする。

GNU Bisonはプログラミング言語を開発する際に使われたりする。その他,PHPなどのプログラミング言語をソースコードからインストールする際にも必要となる。

インストール情報
項目 説明
配布元
リポジトリー
手順
依存情報
依存先 (必須)
依存先 (任意)
  • リポジトリーからのビルド用: Autoconf, Automake, Flex, Gettext, Graphviz, Gzip, Help2man, Perl, Rsync, Tar, Texinfo
依存元
  • PHP
インストール手順
sh -eux <<-"EOT"
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
PKG=bison VER=2.7.1 TAG=v$VER
mkdir -p "$LOCAL/src"; cd "$LOCAL/src"

if false command -v git >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 git://git.savannah.gnu.org/bison.git $PKG
  cd $PKG
  git reset --hard; git clean -df; git fetch --depth 1 origin tag $TAG; git checkout $TAG
  git submodule update --init --progress --depth 3000
./bootstrap else [ -e $PKG-$VER ] || wget https://ftp.gnu.org/gnu/$PKG/$PKG-$VER.tar.xz tar -xf $PKG-$VER.* cd $PKG-$VER fi make -kj $J distclean clean || : ./configure --prefix="$LOCAL/stow/$PKG-$VER" make -j $J; make -j $J check; make -j $J install cd "$LOCAL/stow" stow --ignore=dir -S $PKG-$VER -D $PKG-[0-9]* EOT
インストール例
日付 バージョン OS 依存関係
2019-03-31 2.7.1 Ubuntu 18.04 GNU Make 4.2.1, GCC 7.4.0

GNU Bisonはビルドがなかなか難しく,v2.7.1がtarファイルからのビルドの場合のみ,インストールに成功した。

v2.7.1をリポジトリーからビルドする場合,make実行時に以下のエラーが出た。

make  all-am
make[3]: Entering directory '/home/senooken/.local/src/bison/lib'
  AR       liby.a
ar: `u' modifier ignored since `D' is the default (see `U')
make[3]: *** No rule to make target 'timevar.c', needed by 'timevar.o'.  Stop.

また,3.3.2, 3.3.1, 3.2.91をリポジトリーからビルドするとmakeで以下のエラーが出た。src/scan-code-c.cは存在するが,src/scan-code.cは存在しないようだ。

  CC       src/bison-scan-code-c.o
src/scan-code-c.c:3:10: fatal error: src/scan-code.c: No such file or directory
 #include "src/scan-code.c"

3.2.4, 3.1.91をリポジトリーからビルドする場合,makeで以下のエラーが出た。

make[2]: Entering directory '/home/senooken/.local/src/bison'
  CC       src/bison-AnnotationList.o
In file included from src/AnnotationList.c:23:0:
src/AnnotationList.h:23:11: fatal error: bitsetv.h: No such file or directory
 # include <bitsetv.h>

3.3.2, 3.2.4, 3.1, 3.0.5のtarからのビルドだと,make checkで以下のエラーが出た。。

make[3]: 'examples/c/rpcalc/rpcalc' is up to date.
  LEX      examples/c++/calc++/scanner.cc
  CXX      examples/c++/calc++/calc__-scanner.o
g++: error: ./examples/c++/calc++/scanner.cc: No such file or directory
g++: fatal error: no input files
compilation terminated.

メーリングリストのやりとりで,bison-2.7.1ではmake checkに成功したとの報告を見つけ,2.7.1のtarファイルからビルドすると成功した。

なぜリポジトリーからのビルドや3.xでのビルドに失敗するのか不明だ。続報があり次第,手順を更新する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です