Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ collect2.exe做什么?_C++_C_Gcc_Linker_Ld - Fatal编程技术网

C++ collect2.exe做什么?

C++ collect2.exe做什么?,c++,c,gcc,linker,ld,C++,C,Gcc,Linker,Ld,当我检查gcc-v-oproggy.exe proggy.o生成的代码时,我发现命令行扩展成了大量的库选项和库,所有这些都使用collect2.exe链接。ld.exe怎么了?为什么我看不出来?有人能给我解释一下collect2.exe的作用吗?collect2是一个用于生成构造函数表的实用程序,它依赖于。通常您看不到它,因为它在文件系统中被命名为ld,它反过来调用真实的ld(通常称为real ld,尽管collect2会在许多地方查找它)GCC在几乎所有系统上都使用了一个名为collect2的

当我检查gcc-v-oproggy.exe proggy.o生成的代码时,我发现命令行扩展成了大量的库选项和库,所有这些都使用collect2.exe链接。ld.exe怎么了?为什么我看不出来?有人能给我解释一下collect2.exe的作用吗?

collect2
是一个用于生成构造函数表的实用程序,它依赖于。通常您看不到它,因为它在文件系统中被命名为
ld
,它反过来调用真实的ld(通常称为
real ld
,尽管collect2会在许多地方查找它)

GCC在几乎所有系统上都使用了一个名为collect2的实用程序来安排在启动时调用各种初始化函数

Mrozek先生,谢谢你的回复。下一个问题:如果在命令行上使用LD.EXE,代码会发生什么变化?假设我有ld.exe-L/some_-lib proggy.o-lsome_-lib。这是如何扩展的?你之前对我最初问题的回答很有启发性!谢谢,MarkWorth注意到现代ELF系统不需要这个集合(这当然是一个讨厌的黑客行为)。它们使用ELF中的构造函数和析构函数部分作为con-和destructor。