【问题标题】:ld cannot find udevld 找不到 udev
【发布时间】:2015-06-19 18:32:20
【问题描述】:

我正在尝试编译一个程序,但它会引发以下错误:

[cc] /usr/bin/ld: cannot find -ludev

我检查了关于 SO 的其他主题,但响应是在我似乎安装了 libudev 时安装了一些东西。

在 /lib/x86_64-linux-gnu 我也有:

lrwxrwxrwx 1 root root      16 lut 19 21:30 libudev.so.1 -> libudev.so.1.3.5
-rw-r--r-- 1 root root   67600 lut 19 21:31 libudev.so.1.3.5

我尝试将libudev.so.0 链接到libudev.so.1,但仍然无法正常工作。 ld 在寻找什么,为什么它不起作用?我该如何解决这个问题?

【问题讨论】:

    标签: linux ld


    【解决方案1】:

    当您使用-lfoo 时,链接器将查找名为libfoo.alibfoo.so 的文件。

    所以在你的情况下,你需要libudev.so 没有任何后缀号码。

    某些 Linux 发行版,例如 Debian 及其衍生产品(Ubuntu?),默认情况下不安装这些符号链接。因此,与其自己创建符号链接,不如先尝试寻找 *-dev 包 (libudev-dev)。

    【讨论】:

    • 在 Fedora 上,我通过安装包 systemd-devel 完成了这项工作
    【解决方案2】:

    ld 是链接器的命令,您需要更新您的LIBPATH 变量以包含库位置。

    检查环境变量LIBPATH的值并将其更改为LIBPATH=LIBPATH:<lib location>并再次编译。

    【讨论】:

    • 默认情况下“echo $LIBPATH”没有给我任何东西是正常的吗? (一个空字符串)
    猜你喜欢
    • 2021-05-07
    • 2021-12-21
    • 2015-01-30
    • 2018-06-15
    • 2012-10-24
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    相关资源
    最近更新 更多