Difference between toolchain & compiler

Discussion in 'Embedded Systems and Microcontrollers' started by aamirali, Jul 23, 2014.

  1. aamirali

    Thread Starter Member

    Feb 2, 2012
    What I get is compiler is source code wich converts user written source code into another form of source code

    while toolchain contains everything like compiler, linker, libraries.
  2. shell.albert

    New Member

    Jul 23, 2014
    compiler is to do compile work,it translate your source code to object code only.
    tool chain is a set of developing tools,include compiler,linker,libraries,dump,.etc.
    with a tool chain,you can develop the complete application,it can be run in real.
    for example as below:
    arm-linux-gcc is a cross compiler.
    but arm-linux-gcc & arm-linux-ld &arm-linux-dump ,etc are a tool chain.
  3. sirch2

    Well-Known Member

    Jan 21, 2013
    aamirali - you are nearly there with your description. In its broadest sense a tool-chain can be any set of tools that you use together to produce something, e.g. schematic capture - auto router - gerber generator is a tool-chain. But assuming you are talking about software development tool chains then...

    A compiler takes your source code and compiles it into "machine code" - i.e. a binary representation that a processor can read from memory and execute. In "C" like languages programs are normally made up of several files and some libraries, the compiler generates a binary output file for each C source file. These individual files need to be linked together so that a function call to a library or another C source file actually points to the correct address, A linker does this.

    So at the simplest level for C the tool chain is a compiler and linker. But it might include make files to automate the build, a programmer for burning the target, etc.

    However, personally I wouldn't say libraries are part of the tool-chain because they become part of the deliverable product. The tool-chain is the things used to build the product but are not part of the finished product.