我想在Cygwin中编译一个简单的ANTLR3项目(使用C目标构建)。我已经使用标准./configure
,make
,make install
方式安装在C运行时库和库出现安装成功(头文件安装在/cygdrive/e/cygwin/usr/local/include/
和库文件是/cygdrive/e/cygwin/usr/local/lib/
。无法在cygwin下编译ANTLR3项目,在OSX上工作正常
当我使用g ++编译(我使用C++为项目的其余部分 - C++目标不必产生的AST的能力),并且所有的编译罚款的文件,但链接失败时使用:
g++ -m32 -o compile Main.o Lexer.o Parser.o
给出了错误
。Main.o:Main.cpp:(.text+0xfc): undefined reference to `_antlr3AsciiFileStreamNew'
Main.o:Main.cpp:(.text+0x12b): undefined reference to `_antlr3CommonTokenStreamSourceNew'
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: Main.o: bad reloc address 0x0 in section `.ctors'
collect2: ld returned 1 exit status
添加-lantlr3c
标志该命令也不起作用,虽然错误是不同的:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lantlr3c
collect2: ld returned 1 exit status
make: *** [compile] Error 1
最后,保持库文件的本地目录,并使用'-L“标志也没有按” t工作:
Main.o:Main.cpp:(.text+0xfc): undefined reference to `_antlr3AsciiFileStreamNew'
Main.o:Main.cpp:(.text+0x12b): undefined reference to `_antlr3CommonTokenStreamSourceNew'
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: Main.o: bad reloc address 0x0 in section `.ctors'
collect2: ld returned 1 exit status
第一个命令在OSX上正常工作。任何人有任何想法?我认为这可能与Cygwin奇怪的文件结构/安装位置的选择有关,但我不确定。
是的,那篇文章很有用。最后我放弃了试图让它在cygwin上工作,只是在Ubuntu VM中工作。我会接受这个答案的基础上,你提供的有关3.4的变化的信息是花了我很长时间才发现的。 –