<Linux>linux-C动态链接库

来源:互联网 发布:mysql压缩包安装配置 编辑:程序博客网 时间:2024/06/07 23:25

作者:wsg

时间:2017.8.9--21:00

一、参考博文:http://www.cnblogs.com/Anker/p/3527677.html

二、功能函数产生.so文件(动态链接库):

/*****func.c*****/
#include "wsg.h"//加法int add(int a, int b){    return (a + b);}int sub(int a, int b){    return (a - b);}//除法int div(int a, int b){    return (int)(a / b);}//乘法int mul(int a, int b){    return (a * b);}


命令为: gcc -shared -fPIC func.c -o libfunc.so


下面是封装的头文件:

/*****wsg.h******/
#ifndef _WSG_H_#define _WSG_H_#include <stdio.h>int add(int a, int b); //加法int sub(int a, int b); //减法int div(int a, int b); //除法int mul(int a, int b); //乘法#endif


编写一个主函数来调用这个动态链接库:


/******main.c*******/#include "wsg.h"int main(){int a = 10;int b = 2;printf("%d + %d = %d\n", a, b, add(a, b));    printf("%d - %d = %d\n", a, b, sub(a, b));    printf("%d / %d = %d\n", a, b, div(a, b));    printf("%d * %d = %d\n", a, b, mul(a, b));return 0;}
编译生产可执行文件main如下:gcc main.c -o main -L ./ -lfunc   (其中-L指明动态链接库的路径,-l后是链接库的名称,省略lib)


./main运行程序,发现会出现如下错误:


找不到libfunc.so.

这时需要把libfunc.so复制或者移动到lib目录下才行:



再运行程序即可得到结果:



以上就是整个动态链接库的产生以及调用,作者能力有限,若有不足之处,欢迎提出批评。

原创粉丝点击