Ubuntu и libcap (возможности) неопределенная ссылка - PullRequest
5 голосов
/ 01 декабря 2011

Я пытаюсь скомпилировать следующий минимальный C-код в Ubuntu 10.10:

#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?

Ответы [ 3 ]

5 голосов
/ 01 декабря 2011

Попробуйте gcc -Wl,--no-as-needed -lcap test.c или gcc test.c -lcap.
Надеюсь, это поможет!

2 голосов
/ 06 ноября 2012

Я работаю в 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 голосов
/ 19 декабря 2016

Для RHEL:

yum install libcap-devel
gcc -lcap test.c
...