【问题标题】:cannot find -ll collect2: error: ld returned 1 exit status找不到 -ll collect2:错误:ld 返回 1 退出状态
【发布时间】:2021-04-23 05:42:14
【问题描述】:

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

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

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

【问题讨论】:

  • 尝试将-ll 更改为-lfl
  • 成功了。谢谢@rici

标签: gcc cygwin ld yacc lex


【解决方案1】:

@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属于flexpackage 和 导入库是libfl.a

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

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

【讨论】:

  • 谢谢@matzeri。我无法支持您的回答,因为我没有 15 的声誉,对此我深表歉意。
  • 接受答案对你来说就足够了。 Upvote 是给其他可能会欣赏答案的用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多