Linux下静态库和动态库的生成

版权声明:个人爱好,可随便转载 https://blog.csdn.net/qq_43528087/article/details/88929910

1.何为静态库……何为动态库……?

Windows下:.dll 是动态库 .lib是静态库
Linux下: .so是动态库 .a是静态库

静态库:

在生成可执行程序的时候,会把函数的具体执行方式封装到程序中,程序体积比较大,只要能编译成功,就可以在任意相同的平台上运行

动态库:

在生成可执行程序的时候,只会把函数的接口封装到程序中,体积较小,在程序开始运行时,才调用函数的具体执行方式

2.具体生成方式

静态库:
<1> 生成 .o文件
  gcc -c fun.c (生成fun.o)
<2>生成静态库
  ar crs -o libfun.a fun.o
<3>链接
  gcc main.c -o main libfun.a
动态库:
<1>生成动态库 .o文件
  gcc -fPIC -c fun.c (生成fun.o)
<2>生成动态库
  gcc -fPIC -shared -o libfun.so fun.o
<3>链接
   gcc main.c -o main -I xx1 -L xx2 -lfun
注:xx1:头文件位置 xx2:库文件位置,-l后面是库名
  Linux系统默认链接的是动态库,当库名称一样时,需要用 -staic 指明静态库

链接出错:
  1.ldconfig 动态库路径
   2.将库文件复制到 /usr/bin 或 /lib目录下面

猜你喜欢

转载自blog.csdn.net/qq_43528087/article/details/88929910
今日推荐