ubuntu and libcap (capabilities) undefined reference

Go To StackoverFlow.com

5

I'm trying to compile the following minimal C code on ubuntu 10.10:

#include <sys/capability.h>

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

with gcc -lcap test.c which gives me the following error:

/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

I have libcap2-dev and libcap2-bin installed, version 2.21

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

The same code with same gcc command build successfully on arch and gentoo

What should I do to get it build on ubuntu too?

2011-12-01 08:27
by kuroneko
FYI, your code builds fine on my 64-bit Ubuntu 10.10 box (with libcap-dev 2.19 installed) - NPE 2011-12-01 08:34


5

Try gcc -Wl,--no-as-needed -lcap test.c or gcc test.c -lcap.
Hope this helps!

2011-12-01 08:34
by another.anon.coward
Thank you very much! Both work fine, but why gcc -lcap test.c works fine for my gentoo and arch configs but not for the ubuntu one - kuroneko 2011-12-01 08:47
@kuroneko:I think to the linker --as-needed is option is being passed by default which links the library only when the symbols are encountered which are actaully used in the binary. This is done to avoid linking unnecessary libraries & improve start up time. See this gentoo link about the use of this option. The way you were linking, the library was prior to the source thus was not being linked. Unfortunately I am not able to find the right links with more info about this - another.anon.coward 2011-12-01 09:02


2

I'm working on Ubuntu 10.04 and I had the same problem (sys/capability.h not present on the file system).

I resolved this problem installing via Synaptic Package Manager the package libcap-dev (version 1:2.17-2ubuntul) which populates the /usr/include/sys folder with the capability.h file.

2012-11-06 10:25
by Albi61


0

For RHEL:

yum install libcap-devel
gcc -lcap test.c
2016-12-19 06:46
by Amit Singh
Ads