我一直在尝试学习antlr,并让它与c输出代码一起使用
this
教程(另请参见
this
问题)。我成功地让antlr生成lexer和parser作为C源,但是我不能让它们在mac os x snow leopard(i686-apple-darwin10-gcc-4.2.1)上使用gcc进行编译。下面是我试图编译“simpleCalcLexer.c”时的结果。
dyn-72-33-132-199:Desktop bf$ gcc -o lexer SimpleCalcLexer.c
Undefined symbols:
"_main", referenced from:
start in crt1.10.6.o
"_antlr3LexerNewStream", referenced from:
_SimpleCalcLexerNewSSD in ccjXa6NU.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
simpleCalcLexer.c文件没有在任何地方引用“main”(也没有定义),而是引用解析器
做
定义它,所以我试图编译它:
dyn-72-33-132-199:Desktop bf$ gcc -o parser SimpleCalcParser.c
Undefined symbols:
"_antlr3CommonTokenStreamSourceNew", referenced from:
_main in ccn8ZVhk.o
"_antlr3ParserNewStream", referenced from:
_SimpleCalcParserNewSSD in ccn8ZVhk.o
"_SimpleCalcLexerNew", referenced from:
_main in ccn8ZVhk.o
"_antlr3AsciiFileStreamNew", referenced from:
_main in ccn8ZVhk.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
所以有几个问题:
1)我做错了什么?我很确定库是被找到的,因为代码中还有其他的antlr函数和定义。我打电话给海湾合作委员会是不是打错了?(我以前从未在命令行上编译过这么复杂的东西。)
2)什么是
ccn8ZVhk.o
?我可以知道它是一个对象代码文件,但在我的系统中找不到它(两者都是
locate
和
mdfind
)