用ld怎样连接用了STL的c++程序

用ld怎样连接用了STL的c++程序,第1张

STL中没有那么高深的东西

STL实际上也只规定各种容器应该满足的 *** 作复杂度之类,没有规定具体的数据结构

比如map一般用红黑树实现,但也不排除有编译器愿意用avl树实现

至于后面两个我名字都没听说过的东西,在STL中是不会有直接的对应的

ldd命令用于输出程序或者库文件所依赖的共享库列表。

语法

选项

参数

文件:指定可执行程序或者文库。

ldd原理

首先,ldd不是一个可执行程序,而只是一个shell脚本。

ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下: LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIN_NOW、LD_LIBRARY_VERSION、LD_VERBOSE 等。当 LD_TRACE_LOADED_OBJECTS 环境变量不为空时,任何可执行程序在运行时,它都只会显示模块的dependency,而程序并不真正执行。测试结果如下:

ldd 显示可执行模块的dependency的工作原理,其实质是通过ld-linuxso(elf动态库的装载器)来实现的。ld-linuxso模块会先于executable模块程序工作,并获得控制权。因此当上述的那些变量设置时,ld-linuxso选择了显示可执行模块的dependency。

ld-linuxso读取可执行程序的头信息,这些信息采用 Executable and Linking Format 或者(ELF)格式。 它们通过这些消息,来确定哪些库是必须的,以及哪些库需要加载。 然后执行动态链接,把可执行程序当中所有的地址指针与需要加载的库联系起来, 这样程序就可以运行了。

实际上可以直接执行ld-linuxso模块,如: /lib64/ld-linux-x86-64so2 --list /aout (这相当于 ldd aout )。

示例

通过上面的信息,我们可以得到以下几个信息:

以上就是关于用ld怎样连接用了STL的c++程序全部的内容,包括:用ld怎样连接用了STL的c++程序、ldd查看动态依赖库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9437257.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存