1:进入功能代码目录
    编译 .c文件生成动态库.so文件
    命令:gcc -shared -fPIC *.c -I../include -o libmySQ.so
    《命令规则:gcc -shared -fPIC + 功能文件 + 调用的头文件 + -o + 生成的动态库名》
    -shared :表示生成动态库命令
    -fPIC :表示指定编译生成的代码是内存地址无关的代码
    -I 指定头文件的所在目录
    动态库 - 图1
    2:将 .so文件移到 lib 目录下
    mv libmySQ.so ../lib
    动态库 - 图2
    3:在工程主程序(main.c)用动态库.编译生成可执行文件(xjj)~自己命名即可
    命令:gcc main.c -Iinclude -lmySQ -L ./lib -o xjj
    -lmySQ指定使用libmySQ库, -L指定库所在的目录(lib);
    注:如果lib里有静态库 .a 和 动态库 .so的名称相同则在同级目录下系统优先使用 .so库,如果 .so 库有问题系统才会使用 .a库
    程序执行时,如果报找不到库的错误时的解决方法:
    1).可以把库放入下面的目录里
    64位系统: /lib64; /usr/lib64; /usr/local/lib64
    32位系统: /lib; /usr/lib; /usr/local/lib

    1. 2). 配置环境变量<br /> export LD_LIBRARY_PATH=./ <br /> 再执行程序: ./a.out
    2. 3). 配置动态库的加载路径(vim /etc/ld.so.conf)<br /> 直接把库的所在路径写到/etc/ld.so.conf文件里<br /> 然后更新: ldconfig<br /> <br /> 4). 编译时直接指定库的所在路径只要( .a .so)库与程序(main.c)同一目录即可<br />![](https://cdn.nlark.com/yuque/0/2021/png/2792537/1618503358311-0bd61fb8-77ba-4f20-938f-e70fab6bb333.png#clientId=u1b361575-312b-4&from=ui&id=lcLBc&margin=%5Bobject%20Object%5D&originHeight=321&originWidth=1200&originalType=binary&size=67062&status=done&style=none&taskId=u8de2f715-fd9e-4122-9242-e8e33221660)<br />4: 我这里用的是 配置环境变量<br />命令:export LD_LIBRARY_PATH=$'pwd' //意思是将当前路径cp到系统环境变量(/usr/lib/)中<br />注: 添加时必须在你工程目录的lib文件下<br />![](https://cdn.nlark.com/yuque/0/2021/png/2792537/1618503369992-50addf66-6bcb-424e-8cdb-ae7ff4eaea7e.png#clientId=u1b361575-312b-4&from=ui&id=xIz2P&margin=%5Bobject%20Object%5D&originHeight=281&originWidth=1167&originalType=binary&size=82767&status=done&style=none&taskId=u99463467-4df1-4414-b7a0-fc645cc335c)<br />5:查看是否调用 .so<br />![](https://cdn.nlark.com/yuque/0/2021/png/2792537/1618503381332-715e688d-b4af-491f-8954-a606bea2f4af.png#clientId=u1b361575-312b-4&from=ui&id=qi0eS&margin=%5Bobject%20Object%5D&originHeight=304&originWidth=950&originalType=binary&size=48205&status=done&style=none&taskId=u69fcabab-30e1-4190-a170-5d15c4acbd0)