Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Android- ECLコンパイル時の注意点 libatomic_opsコンパイル時のエラー

この記事は自分のメモ書きとして残します。

Ageneauさんによるecl-androidコンパイルしていて、対処方法に気がつくのが難しいエラーに遭遇したので、その症状と対処方法です。

症状

上記のソースをダウンロードしてmake udpate; make androidすると次のようなエラーが発生することがある。

 

Making all in src
make[1]: Entering directory `/home/yasube/ecl-android/build/host/libatomic_ops/src'
sed -e s:_XBAR::g -e s:XGCCBAR:RELAXED:g \
-e s:XSIZE:char:g -e s:XCTYPE:unsigned/**/char:g /home/yasube/ecl-android/libatomic_ops/src/atomic_ops/sysdeps/gcc/generic-arithm.template > atomic_ops/sysdeps/gcc/generic-arithm.h
/bin/bash: atomic_ops/sysdeps/gcc/generic-arithm.h: No such file or directory
make[1]: *** [atomic_ops/sysdeps/gcc/generic-arithm.h] Error 1
make[1]: Leaving directory `/home/yasube/ecl-android/build/host/libatomic_ops/src'
make: *** [all-recursive] Error 1

 

ただしエラーになるファイル名はgeneric-arithm.h以外のこともあります。sedでxx.templateからxx.hを作る際に発生するエラーです。

 

対処方法

ecl-androidのインストールディレクトリを$ECL_ANDROIDとして、

% cd $ECL_ANDROID/libatomic_ops/src/atomic_ops/sysdeps

% touch *.h */*.h

 

このようにすると既に生成済みのヘッダファイルを使うのでエラーを避けられます。その後、

% cd $ECL_ANDROID

% maek android

とすればコンパイルは最後まで通り、eclのバイナリが作成できます。