Vla*_*ala 6 compiler-construction symbols
这似乎是每个人都谈论但没有人定义的事情之一......我似乎无法找到关于这个主题的任何信息.什么是符号分辨率?这是我发现的最好的东西:http://docs.oracle.com/cd/E23824_01/html/819-0690/chapter2-90421.html#chapter2-93321
它与程序的编译方式有关吗?
那么,既然你提到了Unix的nm,我就可以精确地指出符号分辨率.
可执行文件可以引用未在其自身内定义的实体.例如,共享库上的变量或过程.这些实体由外部符号标识.可执行文件也可能具有可由外部文件引用的内部符号 - 当然是库的情况.
在此上下文中,符号解析一旦将程序加载到存储器中,就为其引用的所有外部实体分配适当的地址.这意味着更改已加载程序中的每个位置,其中引用了外部符号.
这些地址将取决于内存中加载了外部符号的代码的位置.
在Unix中,程序的默认编译模式是使用系统共享库,而不是预先链接可执行文件中所需的所有内容.gcc例如,在编译程序时,-static如果希望对其进行静态编译,则传递该标志,而不是使用未解析的符号引用.
查找"共享库"以获取更多信息.
| 归档时间: |
|
| 查看次数: |
5364 次 |
| 最近记录: |