linux常用库函数学习,linux系统库函数

kodinid 18 0

大家好,今天小编关注到一个比较意思的话题,就是关于linux常用库函数学习的问题,于是小编就整理了4个相关介绍linux常用库函数学习的解答,让我们一起看看吧。

  1. 如何查看linux动态库中包含哪些函数?
  2. linux下C/C++动态库在运行时是怎样加载进来的?
  3. 编程语言中,“库”与“函数”是什么关系?

如何查看linux动态库中包含哪些函数?

主要有两种方法,如下:

1、方法1 nm *.so

linux常用库函数学习,linux系统库函数-第1张图片-安济编程网
图片来源网络,侵删)

2、方法2 readelf -a *.so

说明:

nm可列出.o .a .so中的符号信息包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。

linux常用库函数学习,linux系统库函数-第2张图片-安济编程网
(图片来源网络,侵删)

示例说明 :

nm -D libname.so

nm [option(s)] [file(s)]

linux常用库函数学习,linux系统库函数-第3张图片-安济编程网
(图片来源网络,侵删)

有用的options:

-A 在每个符号信息的前面打印所在对象文件名称;

c语言中头文件 #include中的stdio.h或者其他的函数库到底在哪儿呢,在linux哪个目录下?

<stdio.h>是标准输入输出库,包含了c语言的输入输出函数原型,要进行io操作必须包含此头文件。这是C标准库文件,任何C编译套件中都会有这个文件,不需要下载

linux下C/C++动态库在运行时是怎样加载进来的?

 你说的程序应该是***用了 dynamic loading

  实际上调用了这样一组接口

  dlopen dlclose dlsym   函数名被作为参数传递进去,交给动态链接器 ld.so 。随后 ld.so 会在已经加载的动态库中查找与函数名匹配的符号。如果查找成功就可以返回一个地址指向这个符号的地址。对于函数,这个地址就相当于是一个函数指针。   而这整个过程可以顺利进行下去,还要依赖于当前程序与动态库的 ABI

编程语言中,“库”与“函数”是什么关系?

编程言中:

函数:

c语言的模块,有较强的独立性,可以相互调用。大函数调用小函数,小函数调用小小函数,每一个函数都有自己功能结构清楚。

为什么要做成函数呢?代码重用,方便维护。

库: 标准化。

用于完成输入输出,字符处理管理,数学计数,图像处理,人工智能等宏,类型,链表,算法,函数的集合

库的提供方式很多,有源代码静态库,动态库等。

比如一辆汽车,库提供了所有的组件,我们只需用就可以造出不同的汽车。而不需要造轮子等组件。这就是社会分工协作。

简单的说,函数经过编译后,生成了“库”。

库是电脑硬盘上的一个文件,如windows操作系统一般后缀名为:*.dll、*.lib,linux操作系统下一般后缀名为:*.ko、*.a。而函数是一个程序文件(如*.c)中的一段段代码。这个程序文件经过编译链接后,可生成库文件。

库作为一个磁盘文件,可以被其他程序载入,一但载入成功,该程序就可以调用这个库中所包含的“函数”了。

库又分为动态库和静态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

到此,以上就是小编对于linux常用库函数学习的问题就介绍到这了,希望介绍关于linux常用库函数学习的4点解答对大家有用。

标签: 函数 程序 动态