저는 Mac OS Maverick에서 flex와 bison을 사용하고 있습니다. bash에서 아무 문제 없이 bison 및 flex 명령을 보낼 수 있습니다. 하지만 쉘 스크립트를 사용하여 명령을 실행하려고 하면 이 오류가 발생합니다.
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison: invalid option --
Try `/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison --help' for more information.
flex: can't open minus.l
clang: error: no such file or directory: 'minus.tab.c'
clang: error: no such file or directory: 'lex.yy.c'
: No such file or directoryut
스크립트는 다음과 같습니다.
bison minus.y -d
flex minus.l
gcc minus.tab.c lex.yy.c -lfl -ly
답변1
스크립트에 DOS 줄 끝이 있습니다. bash
캐리지 리턴을 일반 문자로 해석합니다. 실제로 대신 flex
열려고 하면 마지막에 이상한 오류 메시지가 표시됩니다.minus.l\r
minus.l
: No such file or directoryut
뒤에 경로 이름이 있어야 : No such file or directory
하지만 경로 이름이 로 끝나기 때문에 \r
커서가 줄의 시작 부분으로 다시 이동하고 오류 메시지가 ut
경로( )의 마지막 두 문자를 제외한 모든 문자를 덮어씁니다.
삭제 캐리지 리턴 문자를 사용하십시오 dos2unix
.
답변2
스크립트에 헤더가 없습니다.
#!/bin/bash
bison minus.y -d
flex minus.l
gcc minus.tab.c lex.yy.c -lfl -ly
그래도 문제가 해결되지 않으면 줄(끝)을 보고 ( 또는 를 사용하여 ) 파일에 숨겨진 문자(예: CR/ / ) 가 없는지 od -c
확인할 수 있습니다.xxd
^M
\r