GCC属性`_dl_argv`和`_dl_argv_internal`做什么?

时间:2014-07-30 13:27:41

标签: gcc

_dl_argv_dl_argv_internal的目的是什么? 看起来就像它们与dlopen一样,但这就是我猜测的全部内容。他们是真正的属性,还是我的命运?

我一直在谷歌搜索,我能找到的只是补丁和错误信息,但没有解释。

1 个答案:

答案 0 :(得分:0)

是什么让你认为这是GCC属性?

我在海湾合作委员会的消息来源中找到了这个:

extern char **_dl_argv_internal __attribute__ ((alias ("_dl_argv")));

但是,实际上发生在注释中,使用的属性是“别名”,我甚至不确定它是否有效,因为“别名”不是文档属性类型(对于变量)。

这两个符号在Glibc中显示为变量。正如您推测的那样,它们与动态链接器有关,但dlopen具体相关。事实上,这些是动态链接器(通常类似/lib/ld-linux.so.2),因为argv在用户代码中是int main(int argc, char **argv)。启动和运行动态链接器比仅使用一个名为main的函数更复杂,所以有一些汇编代码,并涉及一些系统调用,但该变量最终保持命令行参数相同。 (实际上,动态链接器的工作是在完成所有工作后调用main。)

这是回答你的问题,还是你指的是别的什么?