【问题标题】:Cross compile systemd : cap_init not found交叉编译systemd:未找到cap_init
【发布时间】:2014-07-28 14:15:30
【问题描述】:

我正在尝试为 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,并在调用 configure 之前使用 -L 将包含生成的库的目录添加到 LDFLAGS,并由 echo $LDFLAGS 验证。

错误来自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

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

【问题讨论】:

  • 库搜索路径是否包含libcap.solibcap.a 的路径?

标签: cross-compiling configure autoconf systemd


【解决方案1】:

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

sudo apt-get install libcap-dev

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      对我来说这条消息:

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

      意思是先做这个(centos)

       yum install libcap-devel
      

      【讨论】:

      • 还有其他选择吗?我这样做了,但仍然不断收到错误。
      • 帮我修好了,也许打开一个新的终端或重新启动构建过程?
      猜你喜欢
      • 2013-07-17
      • 2021-08-14
      • 2011-12-17
      • 2016-12-12
      • 2016-10-28
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多