OSD Home

Comparison of free x86 linkers

Notes:

DJGPP ld

Download http://www.delorie.com/djgpp
Chose a mirror site near you, then download gnu/bnuNNNNb.zip (binutils; NNNN is version number)
Relocatable input file formats DJGPP COFF, DJGPP a.out (a.out-i386)
Executable output file formats DJGPP COFF .EXE, unstubbed DJGPP COFF, binary, hex
Set output file format script, --oformat TARGET
Set starting virtual address script, -Ttext=NNN
Specify entry point as symbol script, -e SYM
Set section file alignment NO
Set section memory alignment script
Define label for start of BSS or other segment script, or label in asm startup code
Define label for end of BSS (last segment in executable) script
Set library search path -L PATH
Strip debug info -S
Create a map file -M, -Map FILE
Enable case-sensitive link always case-sensitive
Static linking instead of dynamic always static
Create DLL/shared library NO
Partial link (merge object files into another object file) -r
Put relocations in the final executable file NO
Specify name of DOS STUB stubify adds the .EXE stub(?)
Set starting physical (load) address script

MinGW ld

Download http://mingw.sourceforge.net/
Relocatable input file formats Win32 PE COFF
Executable output file formats stubbed or unstubbed Win32 PE COFF .EXE or .DLL. The linker claims to support ELF, binary, and hex, but they don't work well.
Set output file format script, --oformat TARGET
Set starting virtual address script, -Ttext=NNN
Specify entry point as symbol script, -e SYM
Set section file alignment --file-alignment NNN
Set section memory alignment script, --section-alignment NNN
Define label for start of BSS or other segment script, or label in asm startup code
Define label for end of BSS (last segment in executable) script
Set library search path -L PATH
Strip debug info -S
Create a map file -M, -Map FILE
Enable case-sensitive link always case-sensitive
Static linking instead of dynamic link with static libs instead of DLL import libs?
Create DLL/shared library -shared
Partial link (merge object files into another object file) -r
Put relocations in the final executable file NO
Specify name of DOS STUB NO
Set starting physical (load) address NO; Win32 PE COFF doesn't support this

x86 Linux ld

Download From CD-ROMs or FTP site where you got Linux
Relocatable input file formats ELF, Linux a.out (a.out-i386-linux)
Executable output file formats ELF executable or DLL, binary, hex
Set output file format script, --oformat TARGET
Set starting virtual address script, -Ttext=NNN
Specify entry point as symbol script, -e SYM
Set section file alignment NO
Set section memory alignment script
Define label for start of BSS or other segment script, or label in asm startup code
Define label for end of BSS (last segment in executable) script
Set library search path -L PATH
Strip debug info -S
Create a map file -M, -Map FILE
Enable case-sensitive link always case-sensitive
Static linking instead of dynamic -Bstatic, -dn, -non_shared, -static
Create DLL/shared library -shared
Partial link (merge object files into another object file) -r
Put relocations in the final executable file --emit-relocs
Specify name of DOS STUB NO
Set starting physical (load) address script

alink

Download http://alink.sourceforge.net
Relocatable input file formats OMF (.OBJ), Win32 PE COFF
Executable output file formats DOS .EXE or .COM, Win32 PE COFF .EXE or .DLL
Set output file format -oTARGET
Set starting virtual address -base NNN
Specify entry point as symbol -entry foo
Set section file alignment -filealign NNN
Set section memory alignment -objectalign NNN
Define label for start of BSS or other segment label in asm startup code
Define label for end of BSS (last segment in executable) label in empty BSSEND segment in startup code (BSSEND must be last segment in GROUP statement)
Set library search path -L PATH
Strip debug info NO
Create a map file -m
Enable case-sensitive link -c
Static linking instead of dynamic always static
Create DLL/shared library -dll
Partial link (merge object files into another object file) NO
Put relocations in the final executable file NO
Specify name of DOS STUB -stub STUBFILE
Set starting physical (load) address NO; DOS .EXE and .COM and Win32 PE COFF don't support this

tlink

Download http://bdn.borland.com/museum/
Part of Turbo C++ 1.0.
Relocatable input file formats OMF (.OBJ)
Executable output file formats DOS .EXE or .COM. Later versions can make Win16 .EXE or .DLL
Set output file format /t option makes .COM file, else .EXE
Set starting virtual address use assembler directive (ORG NNN)
Specify entry point as symbol use assembler directive
Set section file alignment NO(?)
Set section memory alignment use assembler directive (SEGMENT ALIGN=NNN)
Define label for start of BSS or other segment label in asm startup code
Define label for end of BSS (last segment in executable) label in empty BSSEND segment in startup code
Set library search path /L PATH
Strip debug info use /v to include debug info in output file
Create a map file use /x to prevent creation of map file
Enable case-sensitive link /c
Static linking instead of dynamic always static
Create DLL/shared library NO
Partial link (merge object files into another object file) NO
Put relocations in the final executable file NO
Specify name of DOS STUB NO
Set starting physical (load) address NO; DOS .EXE and .COM don't support this

ilink32

Download http://www.borland.com/bcppbuilder/freecompiler/
Part of Borland C 5.5
Relocatable input file formats OMF (.OBJ)
Executable output file formats Win32 PE COFF .EXE or .DLL
Set output file format -tTARGET
Set starting virtual address -b:NNN
Specify entry point as symbol EXPORTS directive in .DEF file?
Set section file alignment -Af:NNN
Set section memory alignment -Ao:NNN
Define label for start of BSS or other segment label in asm startup code
Define label for end of BSS (last segment in executable) ?
Set library search path -L PATH
Strip debug info use -v to include debug info in output file
Create a map file use -x to prevent creation of map file
Enable case-sensitive link -c
Static linking instead of dynamic link with static libs instead of DLL import libs?
Create DLL/shared library -tWD
Partial link (merge object files into another object file) NO
Put relocations in the final executable file output file always contains relocations
Specify name of DOS STUB STUB directive in .DEF file
Set starting physical (load) address NO; Win32 PE COFF doesn't support this

Microsoft link

Download It was once possible to download LINK as part of the Windows 98 DDK, but no longer.
Relocatable input file formats Win32 PE COFF
Executable output file formats Win32 PE COFF .EXE or .DLL
Set output file format ?
Set starting virtual address /base:NNN
Specify entry point as symbol /entry SYM
Set section file alignment /align:NNN (sets section memory alignment, too)
Set section memory alignment /align:NNN (sets section file alignment, too)
Define label for start of BSS or other segment label in asm startup code
Define label for end of BSS (last segment in executable) ?
Set library search path /libpath:PATH
Strip debug info ?
Create a map file /map, /map:FILE, /mapinfo:...
Enable case-sensitive link ?
Static linking instead of dynamic link with static libs instead of DLL import libs
Create DLL/shared library ?
Partial link (merge object files into another object file) NO
Put relocations in the final executable file /fixed creates output file without relocations
Specify name of DOS STUB /stub:STUBFILE
Set starting physical (load) address NO; Win32 PE COFF doesn't support this

wlink

Download http://www.openwatcom.org
Relocatable input file formats OMF (.OBJ)
Executable output file formats DOS .COM or .EXE, Win32 PE COFF .EXE or .DLL, OS/2 .EXE or .DLL, LE (VxD), LX, Win16 .EXE or .DLL, PharLap, Novell, QNX, ELF
Set output file format form[at] TARGET
The text in square brackets is optional.
Set starting virtual address op[tion] off[set]=NNN
Specify entry point as symbol ?
Set section file alignment op[tion] a[lign]=NNN
Set section memory alignment op[tion] obja[lign]=NNN
Define label for start of BSS or other segment label in asm startup code
Define label for end of BSS (last segment in executable) ?
Set library search path libp[ath] PATH
Strip debug info use d[ebug] option to include debug info in output file
Create a map file op[tion] m[ap]=FILE
Enable case-sensitive link op[tion] c[aseexact]
Static linking instead of dynamic ?
Create DLL/shared library specify dl[l] after format name in form[at] directive
Partial link (merge object files into another object file) NO
Put relocations in the final executable file NO?
Specify name of DOS STUB op[tion] stub=STUBFILE
Set starting physical (load) address NO

REPORT BUGS OR ERRORS IN THIS DOCUMENT