/usr/bin/ld:找不到 -ll

/usr/bin/ld:找不到 -ll

我正在尝试建立一个激光诱导击穿光谱仪来自泰国计算语言学实验室。

我按照他们的自述文件进行操作,其中说明

2.安装
---------------

2.1)在libs基目录中,输入:

$./configure
$ make

然而,ld 抱怨“无法找到 -ll”。

如果 gcc -DHAVE_CONFIG_H -I. -I. -I../.. -W -Wall -I../../src/libs -g -O2 -MT libs-predict.o -MD -MP -MF ".deps/libs-predict.Tpo" -c -o libs-predict.o libs-predict.c; \
        然后 mv -f ".deps/libs-predict.Tpo" ".deps/libs-predict.Po"; 否则 rm -f ".deps/libs-predict.Tpo"; 退出 1; fi
模式=链接 g++ -g -O2 -o libs-predict libs-predict.o -L../../src/libs -llibs -lm -ll
/usr/bin/ld:找不到 -ll
collect2:ld 返回 1 退出状态
make[3]: [libs-predict] 错误 1 ​​(已忽略)

这是什么库?我需要安装什么包才能拥有它?

答案1

图书馆库文件是 AT&T Lex 的传统支持库 - 它提供了yywrap()和的虚拟版本main(),以及一些其他支持功能。如果您正在使用柔性,那么我认为不需要任何库 - 代码是自包含的(只要您提供自己的版本yywrap;如果没有,请使用-lfl)。因此,您可能只需要安排-ll从命令行中删除“ ”。

如果这太难,那么请创建一个garbage.c包含以下内容的文件:

int podunk = 0;

将其编译garbage.o并创建一个虚拟的libl.a

gcc -c garbage.c
ar r libl.a garbage.o

链接器应该选择这个虚拟库,在其中找不到任何相关内容,然后继续愉快地前进。

答案2

在编译 lex yacc 程序时...如果出现此错误...

错误:

/usr/bin/ld: cannot find -ll 
collect2: error: ld returned 1 exit status

那么解决方案是:

dnf install flex bison
dnf install flex-devel bison-devel

答案3

如果您运行$(which ld)(使用命令替换,或者可以使用反引号代替$(…))而不是仅仅运行,会怎么样ld

如果有帮助,请输入并查看是否为导致发送开关的命令alias -p设置了别名。ld-ll

相关内容