交叉编译systemd:找不到cap_init

DrY*_*Yap 3 autoconf configure cross-compiling systemd

我正在尝试交叉编译systemd-213 for ARM并在此期间收到错误 configure

checking for library containing dlsym... -ldl
checking sys/capability.h usability... yes
checking sys/capability.h presence... yes
checking for sys/capability.h... yes
checking linux/btrfs.h usability... no
checking linux/btrfs.h presence... no
checking for linux/btrfs.h... no
checking for library containing clock_gettime... -lrt
checking for library containing cap_init... no
configure: error: *** POSIX caps library not found
Run Code Online (Sandbox Code Playgroud)

我已经交叉编译了libcap,并在调用之前将包含生成的库的目录添加到LDFLAGS使用-L验证方式.echo $LDFLAGSconfigure

错误来自以下行 configure.ac

AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
Run Code Online (Sandbox Code Playgroud)

我检查了libcap.a和libcap.so,objdump -t并找到了cap_init的条目

00000108 g     F .text  000000b4 cap_init  <- libcap.a
00001240 g     F .text  000000b4 cap_init  <- libcap.so
Run Code Online (Sandbox Code Playgroud)

我对autoconf没有多少经验,但我不明白为什么cap_init找不到.

我想我已经公布了相关信息,但如果需要,我可以提供更多信息.

小智 5

我遇到了同样的问题,但我正在进行交叉编译pulseaudio.问题libcap.so不是找不到的; 问题在于libattr.so,libcap.so无法找到所需要的问题.我在config.log文件中看到了这个.我的解决方案是在引导和配置之前添加-lattrLDFLAGS环境变量.


Pet*_*eoh 5

编译systemd-204时也遇到了相同的错误。解决方案是执行:

sudo apt-get install libcap-dev
Run Code Online (Sandbox Code Playgroud)