我在编译时遇到问题艾菲瓦尔 0.24并且已经在 StackExchange 上搜索了答案,我找到了一个接近的答案如何编译 efivar?但它并没有完全解决我的问题。make V=1 -j1
我收到一条错误消息
root:/sources/efivar-0.24/src# make V=1 -j1
make -f /sources/efivar-0.24/src/Make.deps deps SOURCES="crc32.c creator.c disk.c gpt.c linux.c loadopt.c dp.c dp-acpi.c dp-hw.c dp-media.c dp-message.c efivarfs.c export.c guid.c guids.S guid-symbols.c lib.c vars.c makeguids.c guid.c include/efivar/efivar-guids.h include/efivar/efivar.h include/efivar/efiboot.h include/efivar/efiboot-loadopt.h include/efivar/efivar-dp.h include/efivar/efiboot-creator.h include/efivar/efivar-guids.h guid-symbols.c efivar.c"
make[1]: Entering directory '/sources/efivar-0.24/src'
make[1]: Nothing to be done for 'deps'.
make[1]: Leaving directory '/sources/efivar-0.24/src'
gcc -O2 -g3 -I/sources/efivar-0.24/src/include/efivar/ -specs=/sources/efivar-0.24/gcc.specs -L. -static -I/usr/include -o efivar-static efivar.c dp.static.o dp-acpi.static.o dp-hw.static.o dp-media.static.o dp-message.static.o efivarfs.static.o export.static.o guid.static.o guids.static.o guid-symbols.static.o lib.static.o vars.static.o -ldl -lpopt
/usr/bin/ld: cannot find -lpopt
collect2: error: ld returned 1 exit status
make: *** [/sources/efivar-0.24/Make.rules:17: efivar-static] Error 1
我已经检查了 Make.Defaults 其中包含
prefix ?= /usr/
libdir ?= $(prefix)/lib64/
datadir ?= $(prefix)/share/
mandir ?= $(datadir)/man/
includedir ?= $(prefix)/include/
bindir ?= $(prefix)/bin/
PCDIR ?= $(libdir)/pkgconfig/
DESTDIR ?=
我还搜索了 popt.h 和 popt.pc 以确保它们位于正确的目录中。
root:/sources/efivar-0.24/src# find / -iname popt.h
/usr/include/popt.h
root:/sources/efivar-0.24/src# find / -iname popt.pc
/usr/lib/pkgconfig/popt.pc
/usr/lib/pkgconfig/popt.pc 的输出为
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: popt
Version: 1.16
Description: popt library.
Libs: -L${libdir} -lpopt
Cflags: -I${includedir}
如果有人可以帮助我找到解决办法,或者至少为我指出一个我应该关注的方向,那就太棒了。预先感谢你们,伙计们和女孩们。