使用C 语言 静态连接与动态链接,环境:debian 10 , gcc 8.3.0
源码
int max_int(int x,int y){
if (x>y){
return x;
}else{
return y;
}
}
int plus_int(int x,int y){
return x+y;
}
#include<stdio.h>
#include<stdlib.h>
int plus_int(int a,int b);
int max_int(int x,int y);
int main(int argc,char** argv){
int x=10;
int y=20;
printf("%d\n",max_int(x,y));
int a=32;
int b =45;
printf("%d\n",plus_int(a,b));
exit(0);
}
静态链接
main.elf:main.c libsimplemath.a
gcc main.c libsimplemath.a -o main.elf
libsimplemath.a:simplemath.o
ar -q libsimplemath.a simplemath.o
simplemath.o:simplemath.c
gcc -c simplemath.c -o simplemath.o
clean:
rm -f *.elf
rm -f *.o
rm -f *.a
rm -f *.so
动态链接
main2.elf:main.c libsm.so
export LD_LIBRARY_PATH=.
gcc -o main2.elf main.c -lsm -L.
libsm.so:simplemath.c
gcc --shared -o libsm.so -fPIC simplemath.c