报错-"/usr/bin/ld: cannot find -levent"的原因及解决办法?

Posted

技术标签:

【中文标题】报错-"/usr/bin/ld: cannot find -levent"的原因及解决办法?【英文标题】:Reason and solution for error -"/usr/bin/ld: cannot find -levent "? 【发布时间】:2009-11-12 10:23:19 【问题描述】:

在编译使用 libevent 库的程序时,我正在使用 gcc 选项 -levent。但我收到了这个错误 -

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

我的系统上没有 libevent,所以我在编译时静态链接到它

gcc -o Hello -static -I libevent-1.4.12-stable/ hello.c -levent

我该如何解决这个问题?

提前致谢!

【问题讨论】:

【参考方案1】:

您系统上的libevent.(a|so) 文件在哪里?

如果它不在系统的库路径中,则必须添加一个 -L 选项,将其位置添加到链接器搜索的库路径列表中。

例如

gcc -L/folder/containing/event/lib -levent mysource.cc

【讨论】:

我没有 libevent.(a|so)。我使用 gcc -o Hello -static -I libevent-1.4.12-stable/ hello.c -levent 静态包含 libevent 如果你想链接到库(静态或动态)你需要库。静态库应称为 libevent.a。如果它在 libevent-1.4.12-stable 中,那么您应该提供 -Llibevent-1.4.12-stable 告诉链接器查看那里。【参考方案2】:

您需要在您的系统上拥有libevent,或者需要明确指定其路径(如果它是您获得的带有标头的第三方库)。

我怀疑它不在您的默认 /lib 路径中。

【讨论】:

以上是关于报错-"/usr/bin/ld: cannot find -levent"的原因及解决办法?的主要内容,如果未能解决你的问题,请参考以下文章

chkrootkit 编译报错的解决/usr/bin/ld: cannot find -lc

/usr/bin/ld: cannot find -llzma /usr/bin/ld: cannot find -lbz2

安装 sysbench的 报错 /usr/bin/ld: cannot find -lmysqlclient_r 解决办法

/usr/bin/ld: /tmp/ccIHWHTn.o: in function `Cdisk::Cdisk()‘:编译报错解决方案

/usr/bin/ld: /tmp/ccIHWHTn.o: in function `Cdisk::Cdisk()‘:编译报错解决方案

ubuntu 14.04 编译opencv-3.4.2 报错: /usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): relocation