Excuse the ads! We need some help to keep our site up.

List

Shared Library

설명

Example

Source code(Shared library)

#include <stdio.h>
 
void lazenca(int a){
    printf("lazenca.0x%d\n",a);
}

Source code(executable)

#include <stdio.h>

void main(){
    lazenca(10,10);
}

Build & Setting

Build shared library

lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ gcc -fPIC -shared -o libPIC.so lazenca.c

Setting shared library

include /etc/ld.so.conf.d/*.confe
/home/autolycos/Documents/
$ sudo ldconfig

Build executable file

lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ gcc -o NonPIC test.c -lNonPIC -L.
test.c: In function 'main':
test.c:4:5: warning: implicit declaration of function 'lazenca' [-Wimplicit-function-declaration]
     lazenca(10,10);
     ^
lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$

Run

lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ ./NonPIC 
Lazenca.0x10
lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ 

Check for shared library in the executable file

lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ ldd ./NonPIC 
	linux-vdso.so.1 =>  (0x00007fffb8fd9000)
	libNonPIC.so => /home/lazenca0x0/Documents/Definition/protection/PIC/libNonPIC.so (0x00007f866f6d3000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f866f309000)
	/lib64/ld-linux-x86-64.so.2 (0x0000564199d90000)
lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$

Without shared library

lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$ ./NonPIC 
./NonPIC: error while loading shared libraries: libNonPIC.so: cannot open shared object file: No such file or directory
lazenca0x0@ubuntu:~/Documents/Definition/protection/PIC$

Related information