diff options
author | Jb Evain <jbevain@gmail.com> | 2007-07-17 20:14:19 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2007-07-17 20:14:19 +0400 |
commit | d455fb65df5ab9e1047cef4ccafa3d5de01c1689 (patch) | |
tree | cbc93ea556ae59c2bba61b967f47afd55e4ca9a3 /man/monolinker.1 | |
parent | 5affe123d84836fd4a9b6b14395124089c44d668 (diff) |
move to mono
svn path=/trunk/mono/; revision=82113
Diffstat (limited to 'man/monolinker.1')
-rw-r--r-- | man/monolinker.1 | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/man/monolinker.1 b/man/monolinker.1 new file mode 100644 index 00000000000..25286ad674a --- /dev/null +++ b/man/monolinker.1 @@ -0,0 +1,190 @@ +.\" +.\" The Mono Linker manual page. +.\" +.\" Author: +.\" Jb Evain <jbevain@novell.com> +.\" +.\" Copyright (C) 2007 Novell, Inc (http://www.novell.com) +.\" + +.de Sp +.if t .sp .5v +.if n .sp +.. +.TH CIL Linker "monolinker" +.SH NAME +Mono CIL Linker +.SH SYNOPSIS +.PP +.B monolinker [-o output_directory][-l i18n_assemblies][-c skip | copy | link] -x descriptor | -a assembly | -i info_file ... +.SH DESCRIPTION +\fImonolinker\fP is a CIL Linker. + +The linker is a tool one can use to only ship the minimal possible set of +functions that a set of programs might require to run as opposed to the full +libraries. +.PP +The linker analyses the intermediate code (CIL) produced by every compiler +targeting the Mono platform like mcs, gmcs, vbnc, booc or others. It will walk +through all the code that it is given to it, and basically, perform a mark and +sweep operations on all the code that it is referenced, to only keep what is +necessary for the source program to run. +.SH OPTIONS +.TP +.I "-d search_directory" +.PP +Specify a directory to the linker where to look for assemblies. +.TP +.I "-o output_directory" +Specify the output directory, default is 'output'. +.PP +If you specify the directory `.', please ensure that you won't write over +important assemblies of yours. +.TP +.I "-l i18n_assemblies" +Specify what to do with the region specific assemblies +.PP +Mono have a few assemblies which contains everything region specific: +.nf +I18N.CJK.dll +I18N.MidEast.dll +I18N.Other.dll +I18N.Rare.dll +I18N.West.dll +.fi +.PP +By default, they will all be copied to the output directory, but you can +specify which one you want using this command. The choice can +either be: none, all, cjk, mideast, other, rare or west. You can +combine the values with a comma. +.TP +.I "-c action" +Specify the action to apply to the core assemblies. +.PP +Core assemblies are the assemblies that belongs to the base class library, +like mscorlib.dll, System.dll or System.Windows.Forms.dll. +.PP +The linker can do 3 things about them: +.PP +.nf + skip them, and do nothing with them, + copy them to the output directory, + link them, to reduce their size. +.fi +.PP +You can specify what action to do on the core assemblies with the option: +.TP +.I "-x descriptor" +Use an XML descriptor as a source for the linker. +.PP +Here is an example that shows all the possibilities of this format: +.PP +.nf +<linker> + <assembly fullname="Library"> + <type fullname="Foo" /> + <type fullname="Bar" preserve="nothing" required="false" /> + <type fullname="Baz" preserve="fields" required="false" /> + <type fullname="Gazonk"> + <method signature="System.Void .ctor(System.String)" /> + <field signature="System.String _blah" /> + </type> + </assembly> +</linker> +.fi +.PP +In this example, the linker will link the types Foo, Bar, Baz and Gazonk. +.PP +The preserve attribute ensures that all the fields of the type Baz will be +always be linked, not matter if they are used or not, but that neither the +fields or the methods of Bar will be linked if they are not used. Not +specifying a preserve attribute implies that we are preserving everything in +the specified type. +.PP +The required attribute specifies that if the type is not marked, during the +mark operation, it will not be linked. +.PP +The type Gazonk will be linked, as well as its constructor taking a string as a +parameter, and it's _blah field. +.PP +You can have multiple assembly nodes. +.TP +.I "-a assemblies" +use an assembly as a source for the linker. +.PP +The linker will walk through all the methods of the assembly to generate only what +is necessary for this assembly to run. +.TP +.I "-i info_file" +use a .info xml file as a source for the linker. +.PP +An info file is a file produced by the tool mono-api-info. The linker will use it to +generate an assembly that contains only what the public API defined in he info file +needs. It will also adjust the visibility of the types that have to be present in the +assembly, but that are not visibile from the public API. +.TP +.I "-s [StepBefore:]StepFullName,StepAssembly[:StepAfter]" +.PP +You can ask the linker to execute custom steps by using the -s command. This command +takes the standard TypeFullName,Assembly format to locate the step. You can customize +its position in the pipeline by either adding it before a step, or after. +.PP +Example: +.PP +.nf +using System; + +using Mono.Linker; +using Mono.Linker.Steps; + +namespace Foo { + + public class FooStep : IStep { + + public void Process (LinkContext context) + { + foreach (IStep step in context.Pipeline.GetSteps ()) { + Console.WriteLine (step.GetType ().Name); + } + } + } +} +.fi +.PP +If you compile this custom against monolinker to a Foo.dll assembly, you +can use the -s switch as follow, to add the FooStep at the end of the pipeline: +.PP +.nf +monolinker -s Foo.FooStep,Foo -a program.exe +.fi +.PP +This commanand will add the FooStep after the MarkStep: +.PP +.nf +monolinker -s MarkStep:Foo.FooStep,Foo -a program.exe +.fi +.PP +This commanand will add the FooStep before the MarkStep: +.PP +.nf +monolinker -s Foo.FooStep,Foo:MarkStep -a program.exe +.fi +This command will add the FooStep before the MarkStep +.SH COPYRIGHT +Copyright (C) 2007 Novell, Inc (http://www.novell.com) +.SH BUGS +Bugs report are welcome at http://bugzilla.ximian.com +.PP +Product Mono Tools, Component linker. +.SH MAILING LISTS +Mailing lists are listed at http://www.mono-project.com/Mailing_Lists +.SH WEB SITE +http://www.mono-project.com/Linker +.SH AUTHORS +The linker has been written by Jb Evain, and have been partially founded by +the Google Summer of Code. +.SH LICENSE +The linker is licensed under the MIT/X11 license. Please read the accompayning +MIT.X11 file for details. +.SH SEE ALSO +.BR mono(1) |