- 26
- 11月
这几天一直被一个叫Global Offset Table的东西困扰着。
在uboot的程序上看到一个叫_GLOBAL_OFFSET_TABLE_的东东,却到处找不到。经过一番Google,才明白这东东叫全局变量偏移表,用来做与位置无关的程序编译时使用的。并且编译选项要加上-mabicalls。另:与程序位置无关的编译选项是:-fpic和-fPIC。
Global Offset Table里,存得是一些函数地址,放在.got段。一般是使用gp来访问。
不过在资料中还看到,这个主要用于一些动态库。如果没用到动态库的话,应该也不是十分太需要吧,毕竟使用GOT会影响small data的使用,同时会增加每个函数调用所需的指令。
昨晚郁闷了一晚上,今天看见你的解释才明白,呵呵,感谢分享!
楼主写的这篇文章太好了!真的学到好东西。