Linux学习——动态库的创建

导读:本篇文章讲解 Linux学习——动态库的创建,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一.动态库特点:

在这里插入图片描述

二.生成动态库(共享库)

例子文件:
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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!