_dl_argv
和_dl_argv_internal
的目的是什么? 看起来就像它们与dlopen
一样,但这就是我猜测的全部内容。他们是真正的属性,还是我的命运?
我一直在谷歌搜索,我能找到的只是补丁和错误信息,但没有解释。
答案 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
。)
这是回答你的问题,还是你指的是别的什么?