Linux静态库,linux中静态库和动态库的区别

  Linux静态库,linux中静态库和动态库的区别

  Linux-yg2362-C博客下的静态库和动态库

  Linux 1下的静态库和动态库。制作自己的动态库和静态库。

  在linux下,动态库以。静态库以。答:都是以lib开头。例如,如果一个库被命名为net,它的全名应该是libnet.so或libnet.a

  我们有两个文件,hello.c和test.c,这是两个文件的内容。

  //hello.c

  #包含stdio.h

  void my_lib_func()

  {

  printf(调用的库例程 r n );

  }

  //test.c

  #包含stdio.h

  int main()

  {

  my _ lib _ func();

  返回1;

  }

  Test.c调用hello.c的方法,我们将hello.c封装到一个库文件中。静态和动态库都是由。o文件。我们先把gcc -c hello.c生成成。o文件。

  制作静态库

  Crvlib myhello.ahehello.o,ar是生成静态库的命令,libmyhello.a是我的静态库名。下一步是在我的程序中使用静态库。

  您可以看到已经调用了库例程的结果,这表明调用是成功的。

  我们先删除libmyhello.a,看看程序是否还在正常运行。

  我们发现程序还在正常运行,说明静态库已经接入了我们的程序。

  制作动态库

  我们看到动态库libmyhello.so已经生成,所以我们将继续使用它。

  找不到库文件。此时,我们将so文件复制到/usr/lib。

  运行成功。

  2.动态库和静态库的调用规则。

  我们可以发现,无论是动态库还是静态库,在程序编译连接时都加入了参数-l,那么当两者都存在时,程序会选择动态库还是静态库呢?让我们试一试。

  我们同时有libmyhello.a和libmyhello.so,并且在运行时发现有找不到动态库的错误。因此,我们可以得出结论,当同时存在动态库和静态库时,gcc将优先考虑动态库。

Linux静态库,linux中静态库和动态库的区别