编译udev碰到两个问题,可能是因为版本比较老了。我用的是udev-080。
问题如下:
Linking udev: [ERROR]
arm-linux-gnueabihf-gcc -Wl,-warn-common udev.o -o udev libudev.a
libudev.a(udev_sysfs.o): In function `sysfs_device_get':
/home/hero/work/udev-080/udev_sysfs.c:137: undefined reference to `S_ISLNK'
collect2: error: ld returned 1 exit status
这个问题的解决方法是,在udev_sysfs.c文件中添加库文件#include<sys/stat.h>。
然后继续编译,碰到另一个错误:Compiling udevmonitor.c: [ERROR]
arm-linux-gnueabihf-gcc -c -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=6
4 -Wstrict-prototypes -Wsign-compare -Wshadow -Wchar-subscripts -Wmissing-dec
larations -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wmiss
ing-prototypes -Os -DUSE_LOG udevmonitor.c -o udevmonitor.o
udevmonitor.c: In function ‘init_udev_monitor_socket’:
udevmonitor.c:54:2: warning: implicit declaration of function ‘offsetof’
[-Wimplicit-function-declaration]
udevmonitor.c:54:2: warning: nested extern declaration of ‘offsetof’ [-Wn
ested-externs]
udevmonitor.c:54:21: error: expected expression before ‘struct’
这个问题同样是缺少库文件,在udevmonitor.c文件中,加入#include<stddef.h>就能解决问题。
之后继续编译,没有问题。