map*_*can 8 parsing yacc lex bison flex-lexer
我正在研究一个解析json字符串的解析器,我想把它变成一个库.问题是,当我使用ld链接我写的库时,会出现一条错误消息:
main.o: In function `main':
main.c:(.text+0x0): multiple definition of `main'
json-parser.o:/build/buildd/flex-2.5.35/libmain.c:29: first defined here
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题..?谢谢.
使用gcc -o charcount charcount.o -lfl而不是 gcc -o charcount -lfl charcount.o可能是帮助.
奇怪的是,目标文件和共享库的顺序在这里具有重要意义,但是回归确实有效.
由于flex和bison都没有为您创建主要功能,因此它必须是您自己main()的代码中阻碍库的方式.基本上,不要放入main()图书馆.
但是,值得注意的是,Flex库(-lfl,/usr/lib/libfl.*)和Yacc库(-ly,/usr/lib/liby.*)实际上都包含一个基本main()程序.如果您使用其中一个或两个库,则必须确保main()在扫描库之前链接自己的目标文件.