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

Posted

技术标签:

【中文标题】/usr/bin/ld: 找不到 -ll【英文标题】:/usr/bin/ld: cannot find -ll 【发布时间】:2017-02-03 06:05:57 【问题描述】:

我正在运行make,它将以下标志传递给ld

LDLIBS=-ll -ldl -lreadline -lcurses

但是,当运行 make 时,链接器失败并显示:

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

我真的不确定-ll 指的是什么共享对象库,也不确定如何弄清楚。

我在 CentOS 机器上尝试这个,所以我尝试安装 'Development Tools' 包,认为它一定是非常通用的:

sudo yum groupinstall 'Development Tools'

但无济于事。

图书馆在哪里/是什么?任何帮助将不胜感激!谢谢!

【问题讨论】:

我相信libl-ll 试图加入)是 Solaris 的一部分。不确定是否有 Linux 等价物。 您是从某个库或项目中获取此 makefile 吗? -ll 会建议称为 libl 的东西,在线搜索建议将是 lex。我不使用 CentOS/Redhat,但我会选择通用构建库,flex 和/或 bison 看来'Development Tools'带有flexbison,所以这些依赖已经满足了。此外,在 yum whatprovides libl 中找不到匹配项。感谢您的意见! 可以满足依赖关系,但必须在makefile搜索到的PATH中才能找到。我会检查以确保 libl 的路径在该路径中可用,修改路径以包含该文件,或显式路径。 你要构建什么包? 【参考方案1】:

TL;DR 给sudo apt-get install libfl-dev。如果您发现此问题并正在使用 ubuntu,请尝试一下


我在 ubuntu(在 github 操作上)得到了这个,但没有在本地得到它。

通过阅读一些答案,我发现 libl.a 缺少什么,因此我在本地系统上将其追踪到这个包。

/usr/lib$ dpkg -S /usr/lib/x86_64-linux-gnu/libl.a
libfl-dev:amd64: /usr/lib/x86_64-linux-gnu/libl.a

所以我用sudo apt-get install libfl-dev 修复了 github 操作。

在本地它说它是我拥有的flex 的依赖项。我不确定这是否只是因为我在本地使用 LTS 版本,并且使用 latest 进行 CI。

【讨论】:

在 Debian 上,依赖 libfl-dev 是 flex 的推荐包,如果使用 --no-install-recommends,则不安装。【参考方案2】:

尝试重新安装 Bison 和 flex。sudo apt-get remove bison flex sudo apt-get install bison flex 它对我有用。

【讨论】:

【参考方案3】:

您可以使用以下命令找到哪个包提供的文件:

yum whatprovides "filename"

查看this answer 了解如何操作

【讨论】:

我做了yum whatprovides l(因为图书馆会被称为l)并得到No matches found 看起来它与 lex docs.oracle.com/cd/E36784_01/html/E36873/libl-3lib.html 有关。所以你需要在你的机器上安装 lex/yacc 支持 我相信我是通过yum 做到的,但感谢您的指点。我将验证它是否确实将其放置在ld 可见的默认共享库空间中。

以上是关于/usr/bin/ld: 找不到 -ll的主要内容,如果未能解决你的问题,请参考以下文章

/usr/bin/ld: 未定义的静态库引用

/usr/bin/ld:构建调试/obj/gpsitem.o:文件无法识别:文件被截断

/usr/bin/ld: 无法打开输出文件 bin/genericMatching: 没有这样的文件或目录

关于-static静态链接报出/usr/bin/ld: cannot find -lxxx的问题

[tech][转] 解决/usr/bin/ld: cannot find -lxxx 问题

/usr/bin/ld: cannot find -lfdfsclient