首页 > 其他分享 >库文件的基础

库文件的基础

时间:2023-02-23 20:00:40浏览次数:42  
标签:文件 函数库 lib 基础 动态链接库 动态 out

  • 什么是函数库?
  • 存放粮食的仓库称作粮库。存放函数的仓库称作函数库。
  • 系统提供了标准库还有一些其他的库文件。
  • 用户也可以自定义函数库
  • 根据链接方式的不同,将函数库分为动态库(共享库)和静态库两种
  • 库函数的命名规则

一、静态库的制作和使用

  • 将所有要加入库中的源文件编译为目标文件
  • 将第一步生成的所有目标文件打包为静态库文件
  • 使用静态库文件链接生成可执行文件

库文件的基础_动态库

二、动态库的制作和使用

  • 将所有要加入库的源文件编译为目标文件。与位置无关的目标文件
  • 将第一步生成的目标文件打包到动态库文件中
  • 使用动态链接库生成可执行文件

库文件的基础_动态链接库_02

报错及解决办法:

在我们得到可执行文件a.out时会出现了此报错:a.out: error while loading shared libraries: libp_​​math.so​​: cannot open shared ob iect file: No such file or directory

库文件的基础_动态库_03

因为生成的是动态库所以我们在执行前要加载动态库

查看可执行文件对动态库的依赖?(ldd指令)

首先我们可以用ldd指令去查看一下a.out所依赖的库  指令ldd a.out

库文件的基础_动态库_04

看到libt_math.so并没有加载我们的动态链接器找不到我们的库文件

有两种解决办法

一、LD_LIBRARY_PATH(是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径)

库文件的基础_目标文件_05

在其默认路径下再将我们动态链接库的路径加进去即可。 文件可执行

库文件的基础_动态库_06

二、可以将我们的动态链接库放到连接器默认的路径下

  • 根下的lib或者根下usr下的lib /lib | /usr/lib

链接器默认的路径下可以搜到我们的动态链接库,再次通过ldd a.out 查看发现已经再lib下找到了我们的动态链接库

库文件的基础_动态链接库_07

注:当我们把生成的链接库直接放到lib下,那我们的最后一步gcc main.c -L. -lt_math 是不是就可以改为gcc main.c -lt_math

总结

库文件的基础_动态库_08

标签:文件,函数库,lib,基础,动态链接库,动态,out
From: https://blog.51cto.com/u_15887473/6081754

相关文章

  • python基础知识100题-面试
    1、一行代码实现1--100之和#利用sum()函数求和#res=sum(range(1,101))#print(res)#50502、如何在一个函数内部修改全局变量#利用global修改全局变量'''a=......
  • 第八章 从源文件到可执行文件
        机器运行的是本地代码(NativeCode)用某种编程语言编写出来的程序是源代码,保存源代码的文件是源文件。源文件只是文本文件,并不能直接运行,因为CPU只能运行本地代......
  • java基础语法
    java基础语法注释,标识符,关键字注释注释的意思注释不会被执行,是给我们写代码的人看的,让同行能看懂你写的这个语句是什么意思,和完成进度等等....书写注释是一个非......
  • 事件-Yii 基础-深入理解YII2.0(1.2)
    事件(Event)使用事件,可以在特定的时点,触发执行预先设定的一段代码,事件既是代码解耦的一种方式,也是设计业务流程的一种模式。现代软件中,事件无处不在,比如,你发了个微博,触发了......
  • Asp.NET Core 导出数据到 Excel 文件
    在Asp.NetCore开发中,使用NPOI将数据导出到Excel文件中,并返回给前端。service层代码:///<summary>///将数据导出到excel///</summary>......
  • Java基础语法
    基础语法1.单行注释//2.多行注释/**/3.文档注释/***/4.标识符所有的标识符都应该以字母,或者美元符号$,或者下划线(_)开始标识符大小写敏感5.八大基本数据类......
  • 【转】package.json 文件解析
     package.json文件解析每个项目的根目录下一般都会有一个package.json文件,这个文件定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等)。当......
  • python 操作 ES 一、基础操作
    示例代码环境python:3.8es:7.8.0环境安装pipinstallelasticsearch==7.8.0fromelasticsearchimportElasticsearch#1、创建ES对象,创建连接es=Elasticsearch(......
  • 文件监控利器-Jnotify
    监听的文件变化的方式有很多,但是比较完美的还是jNotifyhttps://jnotify.sourceforge.net/对比一下监控方式的优缺点方式缺点java原生watch可能对文件时间获取......
  • 使用shell判断文件夹中是否包含文件
    #!/bin/bashdirectory="/path/to/directory"if[$(ls-A$directory)];thenecho"有文件"#执行指定shell脚本sh/path/to/script.shelseecho"没有文......