0
tony@tony-HP-2000-Notebook-PC:~$ cd '/home/tony/Desktop/run-privexec' 
tony@tony-HP-2000-Notebook-PC:~/Desktop/run-privexec$ make install
mkdir -p build build/obj
gcc -lcap -lecryptfs build/obj/main.o build/obj/privexec.o build/obj/utils.o build/obj/perms.o -o build/privexec
build/obj/privexec.o: In function `insert_key':
privexec.c:(.text+0x7df): undefined reference to `ecryptfs_add_passphrase_key_to_keyring'
build/obj/privexec.o: In function `remove_key':
privexec.c:(.text+0xdcb): undefined reference to `ecryptfs_remove_auth_tok_from_keyring'
build/obj/perms.o: In function `drop_privileges':
perms.c:(.text+0x73): undefined reference to `cap_get_proc'
perms.c:(.text+0x9d): undefined reference to `cap_set_flag'
perms.c:(.text+0xa5): undefined reference to `cap_set_proc'
perms.c:(.text+0xad): undefined reference to `cap_free'
build/obj/perms.o: In function `raise_privileges':
perms.c:(.text+0x125): undefined reference to `cap_get_proc'
perms.c:(.text+0x14f): undefined reference to `cap_set_flag'
perms.c:(.text+0x157): undefined reference to `cap_set_proc'
perms.c:(.text+0x15f): undefined reference to `cap_free'
collect2: ld returned 1 exit status
make: *** [privexec] Error 1
Employed Russian
  • 199,314
  • 34
  • 295
  • 362
  • Seems you're not finding some functions. Show more code so we can actually see what you are trying to do. –  Mar 16 '15 at 07:13
  • possible duplicate of [Linker order - GCC](http://stackoverflow.com/questions/45135/linker-order-gcc) – Employed Russian Mar 17 '15 at 02:16

1 Answers1

2

Your Makefile produces this command:

gcc -lcap -lecryptfs build/obj/main.o ...

which is incorrect. It should be:

gcc build/obj/main.o ... -lcap -lecryptfs

The order of object files and libraries on the link line matters. You can read here or here to understand why it does.

Employed Russian
  • 199,314
  • 34
  • 295
  • 362