Run Format

Command ld

Ld is the portable code for a modified version of the Plan 9 linker. The original is documented at


It reads object files (.5, .6, or .8 files) and writes a binary named for the architecture (5.out, 6.out, 8.out) by default (if $GOOS is windows, a .exe suffix will be appended).

Major changes include:

- support for ELF, Mach-O and PE binary files
- support for segmented stacks (this feature is implemented here, not in the compilers).

Original options are listed on the manual page linked above.


go tool 6l [flags] mainObj

Substitute 6l with 8l or 5l as appropriate.

Options new in this version:

	Elide the dynamic linking header.  With this option, the binary
	is statically linked and does not refer to a dynamic linker.  Without this option
	(the default), the binary's contents are identical but it is loaded with a dynamic
	linker. This flag cannot be used when $GOOS is windows.
-H darwin     (only in 6l/8l)
	Write Apple Mach-O binaries (default when $GOOS is darwin)
-H dragonfly  (only in 6l/8l)
	Write DragonFly ELF binaries (default when $GOOS is dragonfly)
-H linux
	Write Linux ELF binaries (default when $GOOS is linux)
-H freebsd
	Write FreeBSD ELF binaries (default when $GOOS is freebsd)
-H netbsd
	Write NetBSD ELF binaries (default when $GOOS is netbsd)
-H openbsd    (only in 6l/8l)
	Write OpenBSD ELF binaries (default when $GOOS is openbsd)
-H solaris    (only in 6l)
	Write Solaris ELF binaries (default when $GOOS is solaris)
-H windows    (only in 6l/8l)
	Write Windows PE32+ Console binaries (default when $GOOS is windows)
-H windowsgui (only in 6l/8l)
	Write Windows PE32+ GUI binaries
-I interpreter
	Set the ELF dynamic linker to use.
-L dir1 -L dir2
	Search for libraries (package files) in dir1, dir2, etc.
	The default is the single location $GOROOT/pkg/$GOOS_$GOARCH.
-r dir1:dir2:...
	Set the dynamic linker search path when using ELF.
	Omit the symbol table and debug information.
	Print the linker version.
	Omit the DWARF symbol table.
-X symbol value
	Set the value of an otherwise uninitialized string variable.
	The symbol name should be of the form importpath.name,
	as displayed in the symbol table printed by "go tool nm".
	Link with race detection libraries.
-B value
	Add a NT_GNU_BUILD_ID note when using ELF.  The value
	should start with 0x and be an even number of hex digits.
	Zero stack on function entry. This is expensive but it might
	be useful in cases where you are suffering from false positives
	during garbage collection and are willing to trade the CPU time
	for getting rid of the false positives.
	NOTE: it only eliminates false positives caused by other function
	calls, not false positives caused by dead temporaries stored in
	the current function call.
-linkmode argument
	Set the linkmode.  The argument must be one of
	internal, external, or auto.  The default is auto.
	This sets the linking mode as described in
-tmpdir dir
	Set the location to use for any temporary files.  The
	default is a newly created directory that is removed
	after the linker completes.  Temporary files are only
	used in external linking mode.
-extld name
	Set the name of the external linker to use in external
	linking mode.  The default is "gcc".
-extldflags flags
	Set space-separated trailing flags to pass to the
	external linker in external linking mode.  The default
	is to not pass any additional trailing flags.