• 26
  • 11月

这几天一直被一个叫Global Offset Table的东西困扰着。

在uboot的程序上看到一个叫_GLOBAL_OFFSET_TABLE_的东东,却到处找不到。经过一番Google,才明白这东东叫全局变量偏移表,用来做与位置无关的程序编译时使用的。并且编译选项要加上-mabicalls。另:与程序位置无关的编译选项是:-fpic和-fPIC。

Global Offset Table里,存得是一些函数地址,放在.got段。一般是使用gp来访问。

不过在资料中还看到,这个主要用于一些动态库。如果没用到动态库的话,应该也不是十分太需要吧,毕竟使用GOT会影响small data的使用,同时会增加每个函数调用所需的指令。

» Tags:心得, GCC, uboot

» 这篇文章共有2条评论,你可以在文章底部留下你的评论

  1. ternew Says:
    2011-06-23 09:46

    昨晚郁闷了一晚上,今天看见你的解释才明白,呵呵,感谢分享!

  2. 动漫抱枕 Says:
    2012-11-11 00:35

    楼主写的这篇文章太好了!真的学到好东西。

发表评论