c++ - 解析符号是什么意思?

标签 c++ ld dynamic-linking

<分区>

ld-linux.so 的手册页提到解析符号,但没有解释这个概念。

http://man7.org/linux/man-pages/man8/ld.so.8.html

我认为有问题的短语也在 ld 和 linux 之外使用。

解析符号是什么意思?我见过很多这个短语,但从未见过定义。

导致这个问题的原因是,我确定解析变量的符号是否会保证变量的构造,或者解析符号是否只是说明变量的存在。这个问题与这个有关:

Force Eager Initialization of Static Variables in Dynamically Linked Libs

最佳答案

这意味着将“未定义”符号的用法(例如,一段代码调用共享库中的函数的位置)与实际符号的位置(例如,共享库文件中的实际函数代码)相匹配), 根据需要加载库。

该术语用于在编译时链接静态库和在运行时链接动态库。

在 C++ 中,解析共享库中变量的符号应该在该库尚未加载的情况下构建该库中的所有内容。

关于c++ - 解析符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24977879/

相关文章:

c++ - 将类型定义的数组分配给另一个数组 (c++)

gcc - 如何使用 ld 手动运行生成 elf 可执行文件?

linux - pkg-config --libs 返回 .la 文件,但 g++ 无法处理它

c++ - 如何让 clang 链接到没有 "lib"前缀的库?

c - 我可以强制动态库链接到特定的动态库依赖项吗?

c++ - Cmake 和 QT5 - Include 只接受一个参数

c++ - 从 C++ 调用 Lua 5.2 函数

c++ - 如何使用 googletest 失败进入断点

c - 对 `log' 的 undefined reference

c++ - 如何在主程序中解析共享库的外部符号?