gcc -o pcieinject ./pcietest_hypcie.c ./pcietest_parse.c ./pcietest_pcie.c ./pcietest_pcieaer.c smnlib/hygon_smn.c -O0 -g -Wall -D LITTLEENDIAN_CPU -I comlib -I pcilib -I smnlib -L ./pcilib/lib -Wl,-Bstatic -lpci -Wl,-Bdynamic -lz -lresolv
./pcilib/lib/libpci.a(names-hwdb.o): In function pci_id_hwdb_lookup': names-hwdb.c:(.text+0xd4): undefined reference to
udev_hwdb_get_properties_list_entry’
names-hwdb.c:(.text+0xe9): undefined reference to udev_list_entry_get_next' names-hwdb.c:(.text+0xfd): undefined reference to
udev_list_entry_get_name’
names-hwdb.c:(.text+0x114): undefined reference to udev_list_entry_get_value' names-hwdb.c:(.text+0x249): undefined reference to
udev_new’
names-hwdb.c:(.text+0x256): undefined reference to udev_hwdb_new' ./pcilib/lib/libpci.a(names-hwdb.o): In function
pci_id_hwdb_free’:
names-hwdb.c:(.text+0x27e): undefined reference to udev_hwdb_unref' names-hwdb.c:(.text+0x294): undefined reference to
udev_unref’
只需要在调用pcituils lib的makefile增加-ludev
还有一种改法就是直接修改pciutils的Makefile,简单粗暴,不detect系统配置,直接写成no,反正这两个lib没啥太大用处
Use libkmod to resolve kernel modules on Linux (yes/no, default: detect)
LIBKMOD=no
Use libudev to resolve device names using hwdb on Linux (yes/no, default: detect)
HWDB=no
参考
https://github.com/Xilinx/embeddedsw/pull/30