object文件中的symbol

When a program is compiled, variable names are replaced by their (virtual) addresses. The names aren't necessary for the program to run, but they are essential for debugging. So the compiler stores them and their corresponding addresses in the symbol table.


This also applies to shared libraries. Imagine that I have a library (we'll call it libfoo.so) and I am writing a program that dynamically links with it. Suppose that my program wants to call the bar() function defined in libfoo.so. The linker needs to know where the bar() function is actually defined inside libfoo.so. So the symbol table maps the "bar" symbol to some address.

The way that a modern program might work, then, would be that the first time my program calls the bar() function, it actually jumps to a fake address inside of ld.so (a shared library that acts as the linker). At this point, ld.so looks at the symbol tables of the libraries that I've linked with, finds the bar() function, and replaces the fake address with the actual address. Then, in the future, my program will go to bar() directly, and not go through ld.so.


So it would seem that "symbol" is used as a synonym for the name of a variable function or types. I did eventually find this web page that has an indirect definition on "symbol". As far as term usage I would say that this one is one of the most elusive to find and I image symbol was used because aliases was already taken , still absurd though. A word is not a symbol. Word !=Symbol.


Yeah. You got two great answers from Hazel and Cabhan. A symbol is related to some address, either variable or function or other discrete chunk of memory in the program, such as string literals and whatnot.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值