我收到一个我无法理解的错误。
我正在使用一个通过 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