动态库与静态库的概念与使用

静态库:静态库相当于中间文件(.o)的集合,静态库是在链接时使用,将静态库中的程序直接合成到最终的可执行文件中。

windows下表示为:   .lib

Linux:  .a

动态库(共享库):不可执行的可执行文件(其中没有main函数)

使用动态库的程序运行起来后,动态将动态库加载到内存上执行。

windows:    .dll

Linux:       .so

静态库的生成过程:*.c     功能代码的源文件

1.将多有的源文件编译生成中间文件(*.o)

eg:gcc   -c    main.c    -o    main.o

2.ar   crv    libxxx.a    *.o    ----->libymath.a

扫描二维码关注公众号,回复: 3789965 查看本文章

静态库的使用:

gcc    -o    main    main.c    -L(路径)     -l(库名)

gcc    -c    main    main.c    -L    ./lib          -lmymath

动态库的生成过程:    *.c     功能代码的源文件

gcc   -shared    -fPIC     -o    libxxx.so     *.c   ----->libmymath.so  

动态库的使用:

gcc   -o    main    main.c     -L(路径)     -l(库名)

gcc   -o    main    main.c     -L   ./so          -lmymath

使用动态库的程序在运行时,需要单独搜索并加载动态库文件

1.将动态库拷贝到    /lib     /usr/lib   任意一个路径下

2.设置环境变量    LD    LIBRARY    PATH

      export    LD   LIBRARY  PATH=绝对路径

3.修改配置文件     /etc/profile    ----->设置LD_LIBRARY_PATH

动态库与静态库的区别:

在同一个工程中,不同文件使用静态库都需将静态库拷贝到自己的文件中,而动态库是直接加载到内存上,所以下一个使用动态库的文件,不需要重复加载。

猜你喜欢

转载自blog.csdn.net/weixin_42736024/article/details/81346560