Linux——创建动态库
一.动态库特点:
二.生成动态库(共享库)
例子文件:
test.c:
#include <stdio.h>
#include "mydemo.h"
int main()
{
printf("Test begin : \n");
hello();
show();
return 0;
}
show.c :
#include <stdio.h>
void show(void)
{
printf("Nice !\n");
return;
}
hello.c :
#include <stdio.h>
void hello (void)
{
printf("Hello World\n");
return;
}
mydemo.h :
void show(void);
void hello(void);
(1)生成目标文件 .o
gcc -c -fPIC -Wall 文件名.c
-fPIC
表示告诉编译器生成位置无关代码,也就是这些代码可以在任意位置执行
-Wall
表示尽可能检查错误
(2)创建共享库,以command为例
gcc -shared libcommand.so.1 文件名.o
格式为 lib + 库名 + .so + .x
,最后 .x 表示可以给该库定义一个数字,用来表示版本,也可以不使用 .x ,看个人喜欢
(3)给共享库创建链接
ln -s libcommand.so.1 libcommand.so
这里后面生成的链接格式 严格为 lib + 库名 + .so
(4)编译测试
gcc test.c -L . -lcommand -o test
在gcc编译器中,默认先以 找共享库 ,其次才是去找静态库编译
这里 程序执行错误,是因为系统默认在 /usr/lib 或者 /lib/ 下去寻找库
,但是我们创建的库不在 默认的路径范围之中, 需要我们自己 加入 环境变量
,这样才能让编译器找到 我们自己创建的库
(5)让系统找到库的方法
这里有三种方法,常用的是最后一种 ,因为这样 效果才能 存在持久, 第二种方法的话,打开新的端口 就失效了
1.方法二:
2.方法三:
在 创建的 my.conf 文件中 写入创建库的路径 就可以了,路径可以使用 pwd
查看 最后 用 ldconfig 生效
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68437.html