1:进入功能代码目录
编译 .c文件生成动态库.so文件
命令:gcc -shared -fPIC *.c -I../include -o libmySQ.so
《命令规则:gcc -shared -fPIC + 功能文件 + 调用的头文件 + -o + 生成的动态库名》
-shared :表示生成动态库命令
-fPIC :表示指定编译生成的代码是内存地址无关的代码
-I 指定头文件的所在目录
2:将 .so文件移到 lib 目录下
mv libmySQ.so ../lib
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
2). 配置环境变量<br /> export LD_LIBRARY_PATH=./ <br /> 再执行程序: ./a.out3). 配置动态库的加载路径(vim /etc/ld.so.conf)<br /> 直接把库的所在路径写到/etc/ld.so.conf文件里<br /> 然后更新: ldconfig<br /> <br /> 4). 编译时直接指定库的所在路径只要( .a 或 .so)库与程序(main.c)同一目录即可<br /><br />4: 我这里用的是 配置环境变量<br />命令:export LD_LIBRARY_PATH=$'pwd' //意思是将当前路径cp到系统环境变量(/usr/lib/)中<br />注: 添加时必须在你工程目录的lib文件下<br /><br />5:查看是否调用 .so<br />
