|Traditionally, you can't get far without a linker, and thats a fact.
Linkers are important tools in the production of an Operating System.
They come in many flavours sizes shapes and formats. Some are flexable and some are not.
There are important considerations to make when using a linker.
Some linkers only support one kind of output file format, others support every kind of format know to exist. Formats are often not proprietory, having specifications available means if you wish to use Win32/PE file format, you are not required to use Microsoft's Linker.
This can be important if your going to mix files around. For example, stock DJGPP distribution works with COFF files, and if you link in a TASM assembled OBJ/OMF file, DJGPP(LD) will not recognised it.
This is usually of less a concern than the other requirements.
This can be very, very important! Especially if you want to product flat binary files. (Like an unrelocated kernel image). You need to be able to specify where the code starts and sometimes where the data begins.
As with the above option, this can be important, even if you only need to use it a couple of times.
You might think this a redundant question in the age of "32bit" but there are many custom linkers out there that can't handle 32bit object files.
|JLoc is written by John Fines.
"This program is a linker/locator for use when you need more control over placement of sections within the image, than a standard linker provides."
JLoc can be tricky to use for first timers. Carefull reading of the documentation is required. Its not a get-up-and-go linker like all the other linkers. JLoc _requires_ you to write a custome script for each "executable" image you want to link.
JLoc gives you flexibility over HOW the object files are linked, regarding loaded addresses and so-forth.
JLoc can be obtained here, http://www.erols.com/johnfine/
needs more review!!
|ALink (Anthony's Linker) was written as a companion to NASM, its aim
to provide a Free linker that supports Nasm's output formats and support
some of the more popular executable formats.
ALink can be obtained here, http://www.geocities.com/SiliconValley/Network/4311/index.html
need more of a review!!
|LD, the King of linkers. Supports more input and output formats than
any other linker in existance. Also the most flexable of the listed linkers.
Supports custom linking via scripts. Its advanced featers are hard to
use if you dont know what you are doing.
LD has the most going for it in terms of functionality compared to the other linkers (Thats _my_ opinion anyway...) but lacking OMF/OBJ support is a BIG omission.
This description is based on the LD sources, that can compile to support all formats. Please be aware that the LD that comes with DJGPP is very limited in its output formats (DJGPP/COFF, A.Out, flat binary) and so to with the LD that is part of Linux etc.
|TLink is the linker that comes with Borland C and their assembler TASM.
The difference between TLink and TLink32 is that TLink32 creates ONLY
Win32/PE (and DLL) files where as TLink creates Dos and Win16 files.
|There are really three fundamentally different linkers.
Versions 1.x through 3.x can only produce DOS output. Technically, the _really_ early ones can only produce .com files, and IIRC, starting with 2.x they can also produce .exe files.
Starting with version 4.x, MS Link can also produce NE format output files. These accept OMF/OBJ format with some MS extensions.
Starting with version 6.x, MS link can produce only PE format output files.
These accept either COFF/PE or 32-bit OMF/OBJ format object files and produce (only) PE files as output. They support a few things missing from the Borland linker such as the ability to specify the entry point. Debug formats supported include COFF and CodeView.
Here I should note that I'm listing only the relatively mainstream versions of MS link. They've also produced versions that produce various other formats of output, mostly for OS/2 and/or Windows 3.x VxDs (e.g. LE and LX format).
|VALink is an old old linker that has been floating around for ages.
It is showing its age quite well.
There exists an Enhnaced VALink that needs a review!
|WLink is the linker that comes with Watcom C/C++. Supports a wide
range of options and is flexable to a degree.
But it can be quite braindead at times and its support for generating ELF files is broken and seriously flawed.