g++ 找不到 -ludev,但 libudev.so 在那里

g++ 找不到 -ludev,但 libudev.so 在那里

我收到一个我无法理解的错误。

我正在使用一个通过 USB 端口运行一些硬件的新软件包。

因此我尝试编译他们的一个简单的示例程序:

$ make example1
mkdir -p ./x86_64
g++ -I./../../include -std=c++17 -g -O0  -c -fmessage-length=0 -o ./x86_64/example1.o ../../example1/example1.cpp
g++ -o ./x86_64/example1.run ./x86_64/example1.o -L/lib/x86_64-linux-gnu -L/usr/local/lib -ldl -lpthread -lrt -ludev
/usr/bin/ld: cannot find -ludev
collect2: error: ld returned 1 exit status
make: *** [Makefile:23: example1] Error 1

但是:

$ file /lib/x86_64-linux-gnu/libudev*
/lib/x86_64-linux-gnu/libudev.so.1:      symbolic link to libudev.so.1.6.17
/lib/x86_64-linux-gnu/libudev.so.1.6.17: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f160d354074c8338225478996d8b005386ba795b, stripped

让我感到困惑...

答案1

libudev.so.1在那里(作为 的符号链接libudev.so.1.6.17),但对于额外的符号链接到libudev.so构建时链接器需要ld您将需要安装libudev-dev包:

$ dpkg -S libudev.so
libudev1:amd64: /usr/lib/x86_64-linux-gnu/libudev.so.1.7.0
libudev-dev:amd64: /usr/lib/x86_64-linux-gnu/libudev.so
libudev1:amd64: /usr/lib/x86_64-linux-gnu/libudev.so.1

相关内容