나는 팔로우한다지시하다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