静态库与共享库简单介绍

库文件:

预先编译好的方法的集合,简单说是指某些功能代码的集合(库文件中不允许包含main函数)

静态库

指在链接阶段直接将库中的内容直接合并到最终的可执行文件中
静态库是功能代码编译完成后中间文件的集合,静态库所生成的可执行文件并不依赖于库文件所执行

静态库的生成命令:

1.先编译生成.o文件
gcc -c *.c
2.生成库命令
ar crv libXXXX.a *.o (XXXX代表库名)
(c 创建 r 把方法放入库中 v 显示详细过程<可不加>)

共享库(动态库)

指在链接阶段只在最终的可执行文件(不可单独执行的可执行文件)中设置使用的库,仅仅让可执行文件知道要用到的功能代码在哪个库中,真正执行时,由操作系统单独将共享库动态加载到内存上执行(必须指定系统加载库的路径
共享库所生成的可执行文件依赖于共享库的支持

共享库的生成命令:

gcc -shared -fPIC -o libXXXX.so *.c
(也可用.o文件,.若是c文件,系统会自动帮助编译)

库的使用:

gcc -o main main.c -L(+库的路径) -lXXXX(库名)

操作系统加载库时只会在默认路径下搜索,故需要给出路径,若不给,则将动态库拷贝到/lib或/usr/lib(加载共享库默认路径)下也行,但这需要管理员权限

也可设置环境变量,使操作系统除了在默认路径下搜索外,还需要到用户指定的路径下搜索
export LD_LIBRARY_PATH=绝对路径(仅仅对当前终端有效)
若要使环境变量永久有效,可去修改配置文件/home/user/.bashrc

echo $LD_LIBRARY_PATH 查看环境变量
ldd main 查看主程序加载了哪些共享库
可执行程序,命令存放在:/bin /usr/bin
库文件:/lib /usr/lib
头文件:/usr/include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值