ubuntu和libcap(功能)未定义的引用

问题描述 投票:5回答:3

我正在尝试在ubuntu 10.10上编译以下最小C代码:

#include <sys/capability.h>

void main(void)
{
        cap_t cap;
        cap = cap_get_proc();
}

gcc -lcap test.c,它给我以下错误:

/tmp/ccCQFyXS.o: In function `main':
test.c:(.text+0x9): undefined reference to `cap_get_proc'
collect2: ld a retourné 1 code d'état d'exécution

我安装了libcap2-dev和libcap2-bin,版本2.21

ls /lib/libcap.*
/lib/libcap.a  /lib/libcap.so  /lib/libcap.so.2  /lib/libcap.so.2.21

具有相同gcc命令的相同代码在arch和gentoo上成功构建

我该怎么做才能让它在ubuntu上构建?

c ubuntu undefined-reference linux-capabilities
3个回答
5
投票

试试gcc -Wl,--no-as-needed -lcap test.cgcc test.c -lcap。 希望这可以帮助!


2
投票

我正在研究Ubuntu 10.04,我遇到了同样的问题(sys/capability.h not present on the file system)。

我解决了这个问题,通过Synaptic Package Manager安装包libcap-dev(版本1:2.17-2ubuntul),它使用/usr/include/sys文件填充capability.h文件夹。


0
投票

对于RHEL:

yum install libcap-devel
gcc -lcap test.c
© www.soinside.com 2019 - 2024. All rights reserved.