When I examine the code generated by gcc -v -o proggy.exe proggy.o I find that the command line expands into a large bunch of library options and libraries, all of which are linked using collect2.exe. What happened to ld.exe? Why don't I see that? Can someone explain to me what collect2.exe does?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
collect2
is a utility used to generate a table of constructors that __main
(an auto-generated function called at the beginning of main
) depends on. Normally you don't see it because it's named ld
on the file system, and it in turn calls the real ld (typically called real-ld
, although collect2 will check a number of places looking for it)
回答2:
GCC uses a utility called collect2 on nearly all systems to arrange to call various initialization functions at start time. [link]