Dynamic Linking with Shared Libraries

Limitations with static libraries:

Tada! Introducing Shared Libraries!

Shared libraries:
Creating a shared library:
/*addvec.c*/

int addcnt = 0;

void addvec(int *x, int *y, int *z, int n){
	 int i;
	 addcnt++;
	 for(i = 0; i < n; i++)
		 z[i] = x[i] + y[i];
}
/*multvec.c*/

int multcnt = 0;

int multvec(int *x, int *y, int *z, int n){
	int i;
	multcnt++;
	for(i = 0; i < n; i++)
		z[i] = x[i] * y[i];
}
linux> gcc -shared -fpic -o libvector.so addvec.c mulvec.c
linux> gcc -o prog21 main2.c ./libvector.so

Pasted image 20260426222539.png

Load time dynamic linking
Powered by Forestry.md