What are the differences between a compiler and a linker?

南笙酒味 提交于 2019-12-17 17:39:18

问题


What is the difference between a compiler and a linker in C?


回答1:


The compiler converts code written in a human-readable programming language into a machine code representation which is understood by your processor. This step creates object files.

Once this step is done by the compiler, another step is needed to create a working executable that can be invoked and run, that is, associate the function calls (for example) that your compiled code needs to invoke in order to work. For example, your code could call sprintf, which is a routine in the C standard library. Your code has nothing that does the actual service provided by sprintf, it just reports that it must be called, but the actual code resides somewhere in the common C library. To perform this (and many others) linkages, the linker must be invoked. After linking, you obtain the actual executable that can run.




回答2:


A compiler generates object code files (machine language) from source code.

A linker combines these object code files into an executable.

Many IDEs invoke them in succession, so you never actually see the linker at work. Some languages/compilers do not have a distinct linker and linking is done by the compiler as part of its work.



来源:https://stackoverflow.com/questions/3831312/what-are-the-differences-between-a-compiler-and-a-linker

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!