首页 > 解决方案 > 找不到 -ll collect2:错误:ld 返回 1 退出状态

问题描述

当我尝试编译在 cygwin 中使用lex.yy.c生成的文件时,我遇到了类似的错误。lex helloworld.lgcc lex.yy.c -ll

helloworld.l 包含

%%
[0-9]+ { printf("saw an integer:%s\n", yytext);}
[a-z]+ { printf("saw a lowercase character:%s\n", yytext);}
[A-Z]+ { printf("saw an uppercase character:%s\n", yytext);}
.|\n ;
%%

的输出gcc lex.yy.c -ll

/usr/lib/gcc/i686-pc-cygwin/10/../../../../i686-pc-cygwin/bin/ld: cannot find -ll
collect2: error: ld returned 1 exit status

请帮助我解决此错误并使其正常工作。谢谢!

标签: gcccygwinldyacclex

解决方案


正如@rici所提到的

$ gcc lex.yy.c -lfl

$ ./a < helloworld.l
saw an integer:0
saw an integer:9
saw a lowercase character:printf
saw a lowercase character:saw
...

为什么 ?程序lex属于flex包,导入库是libfl.a

$ cygcheck -f /usr/bin/lex
flex-2.6.4-2

$ cygcheck -l flex | grep a$
/usr/lib/libfl.a

推荐阅读