我正在尝试编译程序,但它会引发以下错误:
[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寻找,为什么它不起作用?我该如何解决这个问题?
答案 0 :(得分:17)
当您使用-lfoo
时,链接器将查找名为libfoo.a
或libfoo.so
的文件。
因此,在您的情况下,您需要libudev.so
而没有任何后缀编号。
某些Linux发行版,例如Debian和衍生(Ubuntu?),默认情况下不安装这些符号链接。因此,不要自己创建该符号链接,请先尝试查找*-dev
包(libudev-dev
)。
答案 1 :(得分:0)
ld
是链接器的命令,您需要更新LIBPATH
变量以包含库位置。
检查env变量LIBPATH的值并将其更改为LIBPATH=LIBPATH:<lib location>
并再次编译。