1

当我得到以下输出时,我正在尝试在 LFS 上为 UEFI 编译 efivars,即使在我编译了 libpopt 之后(尝试使用和不sed -i -e "s/@MARK64@//" Makefile.am使用http://wiki.linuxfromscratch.org/blfs/wiki/popt中所述):

root:/sources/efivar-28# make libdir="/usr/lib/" bindir="/usr/bin/" mandir="/usr/share/man/" includedir="/usr/include/" V=1 -j1
make[1]: Entering directory '/sources/efivar-28/src'
make -f /sources/efivar-28/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 error.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[2]: Entering directory '/sources/efivar-28/src'
make[2]: Nothing to be done for 'deps'.
make[2]: Leaving directory '/sources/efivar-28/src'
gcc -O2 -g3 -I/sources/efivar-28/src/include/efivar/  -specs=/sources/efivar-28/gcc.specs  -L.      -static  -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 error.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[1]: *** [/sources/efivar-28/Make.rules:17: efivar-static] Error 1
make[1]: Leaving directory '/sources/efivar-28/src'
make: *** [Makefile:11: all] Error 2

这是输出ld -lpopt

OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");

<ld linker script here>
==================================================
attempt to open /usr/x86_64-pc-linux-gnu/lib64/libpopt.so failed
attempt to open /usr/x86_64-pc-linux-gnu/lib64/libpopt.a failed
attempt to open /usr/local/lib64/libpopt.so failed
attempt to open /usr/local/lib64/libpopt.a failed
attempt to open /lib64/libpopt.so failed
attempt to open /lib64/libpopt.a failed
attempt to open /usr/lib64/libpopt.so succeeded
-lpopt (/usr/lib64/libpopt.so)
libc.so.6 needed by /usr/lib64/libpopt.so
found libc.so.6 at /lib64/libc.so.6
ld-linux-x86-64.so.2 needed by /lib64/libc.so.6
found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address
4

1 回答 1

0

问题是 LFS 在他们的 popt 配方中禁用了静态库。启用此功能解决了该问题。

于 2016-10-29T14:04:50.357 回答