动态库和静态库制作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35886943/article/details/89714564

库: 可执行代码的二进制形式

  • 静态库:编译时会被链接到目标代码中,程序运行时将不再需要该静态库,因此体积较大

  • 动态库:编译时不会链接到目标代码中,而是在运行时才被载入,运行时需要该动态库,因此体积较小

    创建静态库:# gcc main.c -L. -lfunc
     创建静态库用ar命令,它将.o转换成.a
      # gcc -c func.c 生成目标文件 (func.o)
      # ar crs libfunc.a func.o 生成静态库文件(libfuc.a)
     gcc编译时需要链接静态库
      # gcc main.c -L. -lfunc .代表当前路径 func为库名
    创建动态库:
     用gcc创建共享库
      # gcc -fPIC -Wall -c func.c -fPIC 表示创建与地址无关的编译程序
      # gcc -shared -o libfunc.so func.o 生成动态库文件(libfunc.so)
     使用动态库
      ①# gcc main.c -L. -lfunc . 代表当前路径 func为库名
              编译器默认搜索库的路径是/user/lib和/lib
      ②
       1)配置myld.conf文件,里面加一行库文件的路径,然后将该文件放到/etc/ld.so.conf.d目录下;
       2)在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/myld.conf
       3)执行 ldconfig命令

猜你喜欢

转载自blog.csdn.net/qq_35886943/article/details/89714564
今日推荐