gcc动态库

1.制作出来的库,如何给用户使用?

头文件
制作出来的库
2.动态库的命名规则(三部分)

libXXX.so
其中:
	lib
	.so
	XXX:自定义库的名字

3.制作动态库的步骤

1.准备原材料:源代码.c  .cpp

2..c文件生成.o
		[语法]  gcc .c文件(原材料) -c -fpic(fPIC)
				gcc  *.c [-I ./include]  [-c]  [-fpic(fPIC)]
3.使用gcc -shared,将.o文件打包,生成libXXX.so
				gcc  [-shared *.o]  [-o libXXX.so]

4.动态库的使用

1.生成可执行文件
gcc main.c -I ./include/ -L ./lib/ -lmycalc -o app    
	-L  指定静态库的路径
	-lXXX   XXX指定静态库的名字
	2.执行..app,发现,程序报错,见下图:

在这里插入图片描述

  1. 为什么上面编译成的可执行程序,执行却[找不到链接库]呢?
    对于elf格式的可执行程序,是由ld-linux.so*来完成的,它先后搜索elf文件的[DT_RPATH段——环境变量LD_LIBRARY_PATH——/etc/ld.so.chche文件列表——/lib,/usr/lib目录],找到库后将其载入内存。

  2. 如何让系统找到共享库?解决方案:
    [1]拷贝自己制作的共享库到/lib或者/usr/lib目录下
    [2]设置环境变量
    (1)临时设置LD_LIBRARY_PATH:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径
    (2)永久设置
    用户级别:~/.bashrc
    系统级别:/etc/profile
    [3]更新/etc/ld.so.cache文件列表
    (1)找到配置文件/etc/ld.so.conf,把动态库的绝对路径添加到配置文件中
    (2)执行sudo ldconfig -v
    [4]知识点扩展,使用函数调用的方式
    dlopen,dlclose,dlsym

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值