解析一个符号是什么意思
What does it mean to resolve a symbol?
linux的手册页。So指的是解析符号,但不解释这个概念。
http://man7.org/linux/man-pages/man8/ld.so.8.html我认为这个短语在linux和linux之外也被使用。
解析符号是什么意思?这个短语我见过很多次,但我从来没见过它的定义。
导致这个问题的原因是,我确定为变量解析一个符号是否会保证该变量的构造,或者解析一个符号是否只是注意到变量的存在。这个问题与这个有关:
强制动态链接库中静态变量的初始化
这意味着将"未定义"符号的用法(例如,一段代码在共享库中调用函数的点)与实际符号的位置(例如,共享库文件中实际函数的代码)相匹配,根据需要加载库。
这个术语既用于编译时的静态库链接,也用于运行时的动态库链接。
在c++中,为共享库中的变量解析符号时,如果该库尚未加载,则应该构造该库中的所有内容。
较大的程序由模块组成,分别编译。您可能决定将数据库放在一个模块中,打印放在另一个模块中,用户界面放在另一个模块中。第一步是将每个模块编译成一个所谓的目标文件。一种中间步骤。
最后一步是将所有这些对象"链接"在一起,链接器可能会得出这样的结论:一个对象中的符号试图访问另一个对象中的值或函数,却发现它不存在。在这种情况下,链接器无法"解析"引用。
解析的实际"动作"是计算链接器必须在一个模块中放入的地址,以便它可以正确访问另一个模块中的内容。
请注意,这通常是在C、c++等编译语言中出现的问题,并且是在链接时出现的。它出现在最后一个实例中,在所有模块都转换为对象之后。
声明(例如在头文件中)但未实现(编译器不知道函数的作用)的函数将在库中进行处理。这就是"解析符号"的意思。"符号"是lib导出的函数的名称。每当在代码或任何导入的库中找不到函数的实现时,链接器将"解析符号失败"。
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 为什么不建议使用宏符号常量定义一个固定长度的数组呢
- 类模板上一个特定函数的未解析外部符号
- 使用无符号int作为二进制来在c++中实现一个集
- 编译了一个recent-C++.因此,如果没有暴露std符号,请在旧系统上运行
- 我没有得到一个数字作为输出,而是一个表情符号
- 为无符号字符* 分配一个数字
- C ++读取用户输入的字符一个一个符号
- 'char' c++ 类型的数组中的最后一个符号
- 如何在字符串C++中添加任何符号而不是另一个符号
- 定义一个符号,该符号可能是boost精神中文字功能的一部分
- 为什么我有一个"="符号输出和 2 个笑脸而不是正确的输出?C++
- C++标准是否要求有符号整数正好有一个符号位
- QT和未解决的下一个符号
- c++删除数组中的最后一个符号
- 解析一个符号是什么意思
- 函数与函数名之间有一个&符号
- 当一个符号替换几个符号时,是否存在从UTF-8到CP1251的音译?