フォローする指示するSACをダウンロードしてインストールしましたが、「make fast」コマンドを実行すると、次のエラーが発生しました。
maxx@ubuntu:~/sac2c-1.00-beta-linux-x86_64/stdlib$ make fast
make -f buildfile MODE=lean
cd modules/structures/lib/..; sac2c -v0 -g -O3 -linksetsize 0 ScalarArith.sac -o lib
****ABORT: line 0 file: /usr/include/stdc-predef.h
ABORT: syntax error at pos 36: '3`
ABORT: # 1 "/usr/include/stdc-predef.h" 1 3 4
ABORT:** ^**
*** Compilation failed ***
*** Exit code 1 (Loading SAC program)
*** 1 Error(s), 0 Warning(s)
make[1]: *** [modules/structures/lib/libScalarArithTree.so] Error 1
make: *** [fast] Error 2
maxx@ubuntu:~/sac2c-1.00-beta-linux-x86_64/stdlib$
ここでどのように進むべきかはよくわかりません。私の環境に固有の問題かもしれませんが、非常に具体的なようです。
私は周りを見回して、gccに関する次の記事を見つけました。
プリプロセッサー辞書を含む
GCCプリプロセッサには、翻訳単位ごとに特定のマクロを定義するファイルを事前に含めることができます。これにより、実装の可用性を説明するコンパイラまたはコンパイラ+ランタイムマクロを必要とするC99 / C11およびその他の標準の完全に一貫した実装が可能になります。
Linuxには事前に含まれています。
この微妙な変化は、プリプロセッサのより創造的な使用のいくつかが、次の診断によって失敗する可能性があることを意味します。
/usr/include/stdc-predef.h:0: error: Syntax error near '3'
As a workaround, the stdc-predef.h preinclude can be disabled with the use of -ffreestanding. For non C/C++ code, use the pre-processor flag -P.
それから再コンパイルしようとしています。
make "CPP=gcc -E -ffreestanding" fast
しかし、まだ運がありません。どんなアイデアがありますか?以下は私のスキーマ情報です
Linux ubuntu 3.13.0-35-generic x86_64 x86_64 x86_64 GNU/Linux
答え1
$HOME/.sac2crc
適切な定義CPP_STDIN
および/またはCPP_FILE
。フラグを追加してライン表示の生成を抑制するようにファイルを変更します$SAC2CBASE/setup/sac2crc
。-P
sed 's/gcc -E/& -P/' $SAC2CBASE/setup/sac2crc > ~/.sac2crc