交叉编译systemd:找不到cap_init

时间:2014-06-07 11:14:35

标签: cross-compiling configure autoconf systemd

我正在尝试跨ARM编译systemd-213并在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

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

错误来自configure.ac

中的以下行
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])

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

00000108 g     F .text  000000b4 cap_init  <- libcap.a
00001240 g     F .text  000000b4 cap_init  <- libcap.so

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

sudo apt-get install libcap-dev

答案 2 :(得分:0)

对我来说,这则消息:

 meson.build:680:8: ERROR:  Problem encountered: POSIX caps headers not found

首先要做到这一点(中心点)

 yum install libcap-devel