
正文
linux下ldd命令 linux中ldd的用法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在Red Hat Linux 中程序函数库可以分为哪几种类型? 它们的调用方法各是什么?请说出nm和ldd两个命令的作
1)、在Red Hat Linux中函数库可以分为3种类型:静态函数库、共享函数库和动态加载函数库。
静态函数库在应用程序编译时就把函数的执行代码加入到应用程序中。
共享函数库中的函数当一个可执行程序启动时被加载。
动态加载函数库可以在程序运行的任何阶段加载函数。
2)、使用nm和ldd命令可以获得关于库函数的信息。
nm命令可以列出一个函数库文件中的符号表linux下ldd命令,它对静态的库函数和共享的库函数都能起作用。
ldd命令可以列出一个程序正常运行所需要的共享库。
3)、库函数缺省存放在/lib和/usr/lib中linux下ldd命令,以及动态库配置文件内所列的目录中。
如果库函数没有在这些目录下linux下ldd命令,可以在中加入所须目录linux下ldd命令,后运行ldconfig命令,使之生效。或设置环境变量LD_LIBRARY_PATH或LD_PRELOAD加入库函数所存放的目录。
还有不会的请参考《linux就该这么学》,针对各种linux疑难杂症,帮助linux学习者。
相关问答
Q1: linuxqt程序依赖库位置
操作如下:
1、从可运行程序的文件中拿出可执行文件。
2、终端下使用ldd命令查看需要的连接库。
3、把ldd查询到的所有需要的库导出。
4、编写.sh文档。
5、把所用到的库,可执行文件,.sh文件放到同一目录下。
6、终端中进入这一目录,输入:chmod+xtest.sh。
7、执行程序点击.sh文件或终端输入:./test.sh。
Q2: 如何查看Linux上程序或进程用到的库
使用ldd命令,可以查看程序使用的动态共享库文件:
比如查询amixer使用的动态共享库文件:
ldd /usr/bin/amixer
linux-vdso.so.1 = (0x00007ffcab5ad000)
libm.so.6 = /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd7317f0000)
libasound.so.2 = /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fd731500000)
libc.so.6 = /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd73113b000)
libdl.so.2 = /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd730f37000)
libpthread.so.0 = /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd730d19000)
librt.so.1 = /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd730b11000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd731af6000)
Q3: linux源码包怎么查看依赖关系
一、可执行文件/二进制文件依赖共享库
ldd命令用来查看可执行文件依赖的共享库文件。
$ ldd --help
Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
示例:
$ ldd helloworld
二、共享库依赖共享库关系
上面的ldd命令无法查看共享库的依赖关系,因为共享库本身并不是可执行文件,我们可以使用
objdump -x libhelloworld.so | grep NEEDED
其中,libhelloworld.so是你的库名称。
附:
readelf命令用于读取ELF Header信息
Q4: Linux开发必知内容整理 | libc、glibc和glib的关系
在进行Linux开发不可避免linux下ldd命令的要调用一些系统的API,linux下ldd命令我们经常开到的概念有诸如glibc、libc和glib等等。那么这些系统库之前的关系是什么样的呢?下面我带大家了解一下这些库之前的共同点和差异,希望对以后的编程开发提供帮助。
glibc 和 libc 都是 Linux 下的C函数库。libc是Linux下的ANSI C函数库linux下ldd命令;glibc 是 Linux 下的 GUN C函数库。
那么ANSI C和GNU C有什么区别呢?
ANSI C函数库是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:
GNU C函数库是一种类似于第三方插件的东西。由于 Linux 是用C语言写的,所以Linux的一些操作是用C语言实现的。因此,GUN 组织开发了一个 C 语言的库以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。
查看当前系统的 glibc 版本的方法:
通过执行libc.so.6
切换到libc.so.6所在的目录,执行如下命令。
执行ldd命令
错误观点: GLib 前面有个"g",所以认为glib是GNU的东东linux下ldd命令;同时认为glibc是 GLib 的一个子集。其实,glib和glibc 基本上没有太大联系,可能唯一的共同点就是,其都是C编程需要调用的库而已。
GLib 是Gtk+库和Gnome的基础。 GLib 是一个跨平台的、用C语言编写的五个底层库的集合,为GNOME所使用。其支持的平台包括Linux、Unix和Windows 等。 GLib 为许多标准的、常用的C语言结构提供了相应的替代物。GLib中包含了近二十种实用功能,从简单的字符处理到初学者很难理解的XML解析功能。
官方说明
关于Glib的官方说明:
关于Glibc的官方说明
libc 实际上是一个泛指。凡是符合实现了C标准规定的内容,都是一种 libc 。
glibc是GNU组织对libc的一种实现。它是unix/linux的根基之一。
微软也有自己的libc实现,叫msvcrt 。
嵌入式行业里还常用uClibc ,是一个迷你版的libc 。
linux下ldd命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux中ldd的用法、linux下ldd命令的信息别忘了在本站进行查找喔。







