• step4 . day4 库函数和库函数的制作


    函数库: 具有特定功能的函数,系统或者第三方提供的编译好的二进制文件(如数学库、线程库等),分为静态库和动态库。

    静态库:代码运行时候,将静态库代码复制进文件(用到哪些复制哪些),移植性好,但是代码体积大,升级库后需要重新编译源文件

    生成静态库的步骤:
    1)写库文件源码  即和之前头文件实现的.c文件类似(通常函数库也有头文件)
    2)把源码编译为目标文件(*.o)         gcc -c xxxx.c xxx.c

    3) 用ar命令把目标文件生成lib文件     ar crs libxxx.a xxx.o xxx.o ...
    4)写调库函数的主程序。
    5)把生成的lib文件和主程序一起编译链接

    gcc -o 目标文件名 -L库路径 -lxxx
    gcc -o 目标文件名 -static -L库路径 -lxxx

    动态库:不复制代码到源代码,在程序运行时候同事加载库至内存,动态库可以被多个程序调用,动态库升级方便,但程序运行依赖库的加载
    生成动态库的步骤:

    1)写库文件源码,同上
    2)把源码编译为目标文件(*.o)     gcc -c -fPIC xxxx.c xxx.c  (路径无关文件)

    3)生成动态链接库文件                  gcc -shared -o libxxx.so xxx.o

    4)写调库函数的主程序。
    5)把生成的lib文件和主程序一起编译链接

    gcc -o 目标文件名 -L库路径 -lxxx

    6) 生成的库文件执行文件在执行的时候找不到库文件,
    下面三种方法可选,
    1 把动态库添加到系统的库文件目录中                         //需要权限,不建议使用
    2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的动态库路径   //推荐
    3 添加/etc/ld.so.conf.d/*.conf文件,执行ldconfig刷新   //需要权限,不建议使用

  • 相关阅读:
    不容易系列之二
    Unicode 和Ansi下的字符和字符串转换问题
    转:sizeof()用法汇总
    转:MultiByteToWideChar和WideCharToMultiByte用法详解
    addTarget原理
    SDWebImage底层实现原理
    自动释放池的原理
    最近比较烦
    练车记录
    明天出去游乐场玩耶。
  • 原文地址:https://www.cnblogs.com/huiji12321/p/11305779.html
Copyright © 2020-2023  润新知