X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FUsingLibraries.html;h=2973452532960de1b015416aac5d715bbe207267;hb=b60e851c03970291086966b3610be9485e1eec85;hp=7a677d343159d5f9f00e49257f6d1fec2b35a795;hpb=704e81f6e8c1b75966ed6e5d0256f715c837b9fd;p=oota-llvm.git diff --git a/docs/UsingLibraries.html b/docs/UsingLibraries.html index 7a677d34315..29734525329 100644 --- a/docs/UsingLibraries.html +++ b/docs/UsingLibraries.html @@ -5,7 +5,7 @@ -
Using The LLVM Libraries
+

Using The LLVM Libraries

  1. Abstract
  2. Introduction
  3. @@ -23,11 +23,15 @@

    Written by Reid Spencer

    -

    Warning: This document is out of date, please see llvm-config for more information.

    +

    Warning: This document is out of date, for more + information please + see llvm-config or, + if you use CMake, the CMake LLVM + guide.

    -
    Abstract
    -
    +

    Abstract

    +

    Amongst other things, LLVM is a toolkit for building compilers, linkers, runtime executives, virtual machines, and other program execution related tools. In addition to the LLVM tool set, the functionality of LLVM is @@ -41,8 +45,8 @@

    - -
    +

    Introduction

    +

    If you're writing a compiler, virtual machine, or any other utility based on LLVM, you'll need to figure out which of the many libraries files you will need to link with to be successful. An understanding of the contents of these @@ -70,8 +74,8 @@ correct for your tool can sometimes be challenging.

    -
    Library Descriptions
    -
    +

    Library Descriptions

    +

    The table below categorizes each library @@ -81,15 +85,15 @@ - + - + - + @@ -112,10 +116,8 @@ - - - + @@ -130,8 +132,6 @@ - - @@ -143,17 +143,17 @@ - + - +
    LibraryFormsDescription
    LLVMAsmParser.a LLVM assembly parsing
    LLVMBCReader.aLLVM bytecode reading
    LLVM bitcode reading
    LLVMBCWriter.aLLVM bytecode writing
    LLVM bitcode writing
    LLVMCore.a LLVM core intermediate representation
    LLVMDebugger.a Source level debugging support
    LLVMLinker.aBytecode and archive linking interface
    Bitcode and archive linking interface
    LLVMSupport.a General support utilities
    LLVMSystem.aAll inter-procedural optimization passes.
    LLVMScalarOpts.a All scalar optimization passes.
    LLVMTransforms.aUncategorized transformation passes.
    LLVMTransformUtils.aTransformation utilities.
    Transformation utilities used by many passes.
    Code Generation Libraries
    LLVMCodeGen.oCode generation for ARM architecture
    LLVMCBackend.o 'C' language code generator.
    LLVMIA64.oCode generation for IA64 architecture
    LLVMPowerPC.o Code generation for PowerPC architecture
    LLVMSparc.o
    Runtime Libraries
    LLVMInterpreter.oBytecode Interpreter
    Bitcode Interpreter
    LLVMJIT.oBytecode JIT Compiler
    Bitcode JIT Compiler
    LLVMExecutionEngine.o Virtual machine engine

    -
    Using llvm-config
    -
    +

    Using llvm-config

    +

    The llvm-config tool is a perl script that produces on its output various kinds of information. For example, the source or object directories used to build LLVM can be accessed by passing options to llvm-config. @@ -187,77 +187,79 @@ -

    Dependency Relationships Of Libraries

    +

    Dependency Relationships Of Libraries

    This graph shows the dependency of archive libraries on other archive libraries or objects. Where a library has both archive and object forms, only the archive form is shown.

    - Library Dependencies -

    Dependency Relationships Of Object Files

    + Library Dependencies +

    Dependency Relationships Of Object Files

    This graph shows the dependency of object files on archive libraries or other objects. Where a library has both object and archive forms, only the dependency to the archive form is shown.

    - Object File Dependencies + Object File Dependencies

    The following list shows the dependency relationships between libraries in textual form. The information is the same as shown on the graphs but arranged alphabetically.

    -
    libLLVMAnalysis.a
      +
      libLLVMAnalysis.a
      • libLLVMCore.a
      • libLLVMSupport.a
      • libLLVMSystem.a
      • libLLVMTarget.a
      -
      libLLVMArchive.a
        +
        libLLVMArchive.a
        • libLLVMBCReader.a
        • libLLVMCore.a
        • libLLVMSupport.a
        • libLLVMSystem.a
        -
        libLLVMAsmParser.a
          +
          libLLVMAsmParser.a
          • libLLVMCore.a
          • -
          • libLLVMSupport.a
          • libLLVMSystem.a
          -
          libLLVMBCReader.a
            +
            libLLVMBCReader.a
            • libLLVMCore.a
            • libLLVMSupport.a
            • libLLVMSystem.a
            -
            libLLVMBCWriter.a
              +
              libLLVMBCWriter.a
              • libLLVMCore.a
              • libLLVMSupport.a
              • libLLVMSystem.a
              -
              libLLVMCodeGen.a
                +
                libLLVMCodeGen.a
                • libLLVMAnalysis.a
                • libLLVMCore.a
                • +
                • libLLVMScalarOpts.a
                • libLLVMSupport.a
                • libLLVMSystem.a
                • libLLVMTarget.a
                • +
                • libLLVMTransformUtils.a
                -
                libLLVMCore.a
                  +
                  libLLVMCore.a
                  • libLLVMSupport.a
                  • libLLVMSystem.a
                  -
                  libLLVMDebugger.a
                    +
                    libLLVMDebugger.a
                    • libLLVMBCReader.a
                    • libLLVMCore.a
                    • libLLVMSupport.a
                    • libLLVMSystem.a
                    -
                    libLLVMInstrumentation.a
                      +
                      libLLVMInstrumentation.a
                      • libLLVMCore.a
                      • libLLVMScalarOpts.a
                      • libLLVMSupport.a
                      • libLLVMTransformUtils.a
                      -
                      libLLVMLinker.a
                        +
                        libLLVMLinker.a
                        • libLLVMArchive.a
                        • libLLVMBCReader.a
                        • libLLVMCore.a
                        • +
                        • libLLVMSupport.a
                        • libLLVMSystem.a
                        -
                        libLLVMScalarOpts.a
                          +
                          libLLVMScalarOpts.a
                          • libLLVMAnalysis.a
                          • libLLVMCore.a
                          • libLLVMSupport.a
                          • @@ -265,7 +267,8 @@
                          • libLLVMTarget.a
                          • libLLVMTransformUtils.a
                          -
                          libLLVMSelectionDAG.a
                            +
                            libLLVMSelectionDAG.a
                              +
                            • libLLVMAnalysis.a
                            • libLLVMCodeGen.a
                            • libLLVMCore.a
                            • libLLVMSupport.a
                            • @@ -273,40 +276,34 @@
                            • libLLVMTarget.a
                            • libLLVMTransformUtils.a
                            -
                            libLLVMSupport.a
                              +
                              libLLVMSupport.a
                              • libLLVMSystem.a
                              • libLLVMbzip2.a
                              -
                              libLLVMSystem.a
                              -
                              libLLVMTarget.a
                                -
                              • libLLVMCodeGen.a
                              • +
                                libLLVMSystem.a
                                +
                                +
                                libLLVMTarget.a
                                • libLLVMCore.a
                                • -
                                • libLLVMSelectionDAG.a
                                • libLLVMSupport.a
                                • libLLVMSystem.a
                                -
                                libLLVMTransformUtils.a
                                  +
                                  libLLVMTransformUtils.a
                                  • libLLVMAnalysis.a
                                  • libLLVMCore.a
                                  • -
                                  • libLLVMScalarOpts.a
                                  • libLLVMSupport.a
                                  • libLLVMSystem.a
                                  • -
                                  • libLLVMipa.a
                                  • -
                                  -
                                  libLLVMTransforms.a
                                    -
                                  • libLLVMCore.a
                                  • -
                                  • libLLVMSupport.a
                                  • libLLVMTarget.a
                                  • -
                                  • libLLVMTransformUtils.a
                                  • +
                                  • libLLVMipa.a
                                  -
                                  libLLVMbzip2.a
                                  -
                                  libLLVMipa.a
                                    +
                                    libLLVMbzip2.a
                                    +
                                    +
                                    libLLVMipa.a
                                    • libLLVMAnalysis.a
                                    • libLLVMCore.a
                                    • libLLVMSupport.a
                                    • libLLVMSystem.a
                                    -
                                    libLLVMipo.a
                                      +
                                      libLLVMipo.a
                                      • libLLVMAnalysis.a
                                      • libLLVMCore.a
                                      • libLLVMSupport.a
                                      • @@ -315,93 +312,86 @@
                                      • libLLVMTransformUtils.a
                                      • libLLVMipa.a
                                      -
                                      LLVMARM.o
                                        -
                                      • libLLVMCodeGen.a
                                      • +
                                        libLLVMlto.a
                                          +
                                        • libLLVMAnalysis.a
                                        • +
                                        • libLLVMBCReader.a
                                        • +
                                        • libLLVMBCWriter.a
                                        • libLLVMCore.a
                                        • +
                                        • libLLVMLinker.a
                                        • libLLVMScalarOpts.a
                                        • -
                                        • libLLVMSelectionDAG.a
                                        • libLLVMSupport.a
                                        • libLLVMSystem.a
                                        • libLLVMTarget.a
                                        • +
                                        • libLLVMipa.a
                                        • +
                                        • libLLVMipo.a
                                        -
                                        LLVMAlpha.o
                                          +
                                          LLVMARM.o
                                          • libLLVMCodeGen.a
                                          • libLLVMCore.a
                                          • -
                                          • libLLVMScalarOpts.a
                                          • libLLVMSelectionDAG.a
                                          • libLLVMSupport.a
                                          • libLLVMSystem.a
                                          • libLLVMTarget.a
                                          -
                                          LLVMCBackend.o
                                            -
                                          • libLLVMAnalysis.a
                                          • +
                                            LLVMAlpha.o
                                            • libLLVMCodeGen.a
                                            • libLLVMCore.a
                                            • -
                                            • libLLVMScalarOpts.a
                                            • +
                                            • libLLVMSelectionDAG.a
                                            • libLLVMSupport.a
                                            • libLLVMSystem.a
                                            • libLLVMTarget.a
                                            • -
                                            • libLLVMipa.a
                                            -
                                            LLVMDataStructure.o
                                              +
                                              LLVMCBackend.o
                                              • libLLVMAnalysis.a
                                              • +
                                              • libLLVMCodeGen.a
                                              • libLLVMCore.a
                                              • +
                                              • libLLVMScalarOpts.a
                                              • libLLVMSupport.a
                                              • libLLVMSystem.a
                                              • libLLVMTarget.a
                                              • +
                                              • libLLVMTransformUtils.a
                                              • +
                                              • libLLVMipa.a
                                              -
                                              LLVMExecutionEngine.o
                                                -
                                              • libLLVMCore.a
                                              • -
                                              • libLLVMSupport.a
                                              • -
                                              • libLLVMSystem.a
                                              • -
                                              • libLLVMTarget.a
                                              • -
                                              -
                                              LLVMIA64.o
                                                -
                                              • libLLVMCodeGen.a
                                              • +
                                                LLVMExecutionEngine.o
                                                • libLLVMCore.a
                                                • -
                                                • libLLVMScalarOpts.a
                                                • -
                                                • libLLVMSelectionDAG.a
                                                • libLLVMSupport.a
                                                • libLLVMSystem.a
                                                • libLLVMTarget.a
                                                -
                                                LLVMInterpreter.o
                                                  +
                                                  LLVMInterpreter.o
                                                  • LLVMExecutionEngine.o
                                                  • +
                                                  • libLLVMCodeGen.a
                                                  • libLLVMCore.a
                                                  • libLLVMSupport.a
                                                  • libLLVMSystem.a
                                                  • libLLVMTarget.a
                                                  -
                                                  LLVMJIT.o
                                                    +
                                                    LLVMJIT.o
                                                    • LLVMExecutionEngine.o
                                                    • -
                                                    • libLLVMCodeGen.a
                                                    • libLLVMCore.a
                                                    • libLLVMSupport.a
                                                    • libLLVMSystem.a
                                                    • libLLVMTarget.a
                                                    -
                                                    LLVMPowerPC.o
                                                      +
                                                      LLVMPowerPC.o
                                                      • libLLVMCodeGen.a
                                                      • libLLVMCore.a
                                                      • -
                                                      • libLLVMScalarOpts.a
                                                      • libLLVMSelectionDAG.a
                                                      • libLLVMSupport.a
                                                      • libLLVMSystem.a
                                                      • libLLVMTarget.a
                                                      -
                                                      LLVMSparc.o
                                                        +
                                                        LLVMSparc.o
                                                        • libLLVMCodeGen.a
                                                        • libLLVMCore.a
                                                        • -
                                                        • libLLVMScalarOpts.a
                                                        • libLLVMSelectionDAG.a
                                                        • libLLVMSupport.a
                                                        • libLLVMSystem.a
                                                        • libLLVMTarget.a
                                                        -
                                                        LLVMX86.o
                                                          +
                                                          LLVMX86.o
                                                          • libLLVMCodeGen.a
                                                          • libLLVMCore.a
                                                          • -
                                                          • libLLVMScalarOpts.a
                                                          • libLLVMSelectionDAG.a
                                                          • libLLVMSupport.a
                                                          • libLLVMSystem.a
                                                          • @@ -411,41 +401,45 @@
    - -
    +

    Linkage Rules Of Thumb

    +

    This section contains various "rules of thumb" about what files you should link into your programs.

    -
    - -
    +

    + Always Link LLVMCore, LLVMSupport, and LLVMSystem +

    +

    No matter what you do with LLVM, the last three entries in the value of your LLVMLIBS make variable should always be: LLVMCore LLVMSupport.a LLVMSystem.a. There are no LLVM programs that don't depend on these three.

    - -
    +

    + Never link both archive and re-linked library +

    +

    There is never any point to linking both the re-linked (.o) and the archive (.a) versions of a library. Since the re-linked version includes the entire library, the archive version will not resolve any symbols. You could even end up with link error if you place the archive version before the re-linked version on the linker's command line.

    + +
    +