Linux定义函数(linux 定义函数)

Linux定义函数(linux

linux下怎么查看某个结构体的定义?

Linux下查看结构体、变量、函数的定义可以用一款Windows上的软件叫做Source Insight,这个软件在Linux的Wine环境中运行的非常好,是少数可以在Linux平台正常运行的Windows应用,这个软件最大的作用就是浏览代码,可以很容易的跳转到变量、函数、结构体、类的定义处,特别是代码项目比较庞大时就更能够显示出它的好处了。

linux中自定义函数优缺点?

在Linux操作系统中,函数库根据是否被编译到程序内部而分为静态函数库和动态函数库。

静态函数库

扩展名(.a)

编译行为

静态函数库在编译的时候会被直接整合到执行程序之中,因此执行程序会大一些。

可以独立执行

由于静态函数库会被整合到执行程序中,即执行程序相当于已经有了静态函数库的一个副本了,那么执行程序便可以独立执行,与原静态函数库的状态无关了。

升级

因为函数库会跟着源程序一起编译,因此,如果函数库升级了,那么使用该函数库的源程序需要重新编译生成新的执行程序。

动态函数库

扩展名(.so)

编译行为

包含动态函数库的源程序在编译的时候,使用动态函数库的地方只有一个指向函数库的“指针”而已,并没有将动态函数库整合进来,然后在执行程序要使用到函数库的时候才根据这个“指针”去调用相应的动态函数库,所以执行文件比较小。

不能独立执行

因为在编译的时候,动态函数库在执行程序中只是一个“指针”的存在,并且在执行的时候调用,因此,动态函数库需要在程序执行的时候存在,并且函数库的目录要跟程序中的“指针”保持一致。

升级

因为编译的时候函数库只是留下一个地址,因此只要地址不变,函数库变化了也不会影响程序的执行。因此,在动态函数库升级的时候,源程序不需要重新编译。(这里可以看出,动态函数库本身似乎可以很容易地进行修改,比较重要的是其存放的位置,如果位置发生改变,会导致使用该函数库的程序在执行时发生错误)

对于目前的开发比较倾向于动态函数库,原因是升级容易。因此,我们也需要了解我们的二进制执行文件到底使用了哪些动态函数库。而ldd命令可以查询到。

**ldd **

参数:

-v: 列出所有内容信息;

-d: 重新将数据有丢失的link点显示出来;

-r: 将ELF有关的错误内容显式出来。

1

2

3

4

5

1

2

3

4

5

例如我们常用到的ls命令,我们可以查看其使用到的动态函数库。

我们先用which命令查看ls命令的目录。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平