[LLVMdev] undefined reference when using llvm-config

Tom Hawkins tomahawkins at gmail.com
Fri Jun 11 14:58:13 PDT 2010


I'm still at a loss regarding the llvm undefined references.  I
reinstalled llvm-2.7, but the results are the same.  Do I need any
special configure options to enable the libraries to be compiled
correctly for linking with custom tools?

Again, here is what I'm attempting as a test of the compilation and
linking process:

$ llvm-g++ `$(HOME)/llvm/bin/llvm-config --cxxflags --ldflags --libs
bitwriter` ModuleMaker.cpp

And here is what I get:

/tmp/ccpwMjBS.o: In function `main':
ModuleMaker.cpp:(.text+0x1d): undefined reference to
`llvm::LLVMContext::LLVMContext()'
ModuleMaker.cpp:(.text+0x4f): undefined reference to
`llvm::Module::Module(llvm::StringRef, llvm::LLVMContext&)'
ModuleMaker.cpp:(.text+0x59): undefined reference to
`llvm::Type::getInt32Ty(llvm::LLVMContext&)'
...

The llvm-config command returns the following:

-I/home/e0082888/llvm/include  -D_DEBUG -D_GNU_SOURCE
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O2
-fomit-frame-pointer -fno-exceptions -fno-rtti -fPIC
-Woverloaded-virtual
-L/home/e0082888/llvm/lib  -lpthread -ldl -lm
-lLLVMBitWriter -lLLVMCore -lLLVMSupport -lLLVMSystem

What am I doing wrong?  Any help would be appreciated.

Thanks.

-Tom






On Sat, Jun 5, 2010 at 7:21 AM, Tom Hawkins <tomahawkins at gmail.com> wrote:
> On Sat, Jun 5, 2010 at 3:18 AM, Duncan Sands <baldrick at free.fr> wrote:
>> Hi Tom,
>>
>> I'm pretty sure that the LLVMContext constructor is defined in libLLVMCore.a
>> What is the output of `llvm-config --libs bitwriter`?  Does it include
>> -lLLVMCore?
>
> Hi Duncan,
>
> e0082888 at e0082888-laptop:~$ local/bin/llvm-config --libs bitwriter
> -lLLVMBitWriter -lLLVMCore -lLLVMSupport -lLLVMSystem
>
> I verified it's pulling from the right library directory, because if I
> hide libLLVMCore.a from view and I get:
>
>  e0082888 at e0082888-laptop:~/projects/llvm-hs/tools/ModuleMaker$ g++
> `$HOME/local/bin/llvm-config --cppflags --cxxflags --ldflags --libs
> bitwriter` ModuleMaker.cpp
> /usr/bin/ld: cannot find -lLLVMCore
> collect2: ld returned 1 exit status
>
> And libLLVMCore.a contains at least something related to LLVMContext:
>
> e0082888 at e0082888-laptop:~/local/lib$ objdump -h libLLVMCore.a | grep
> LLVMContext
> LLVMContext.o:     file format elf32-i386
> 313 .text._ZN4llvm15LLVMContextImplC1ERNS_11LLVMContextE 00001199
> 00000000  00000000  00007420  2**4
> 314 .text._ZN4llvm14object_creatorINS_11LLVMContextEEEPvv 0000003a
> 00000000  00000000  000085c0  2**4
> 319 .text._ZN4llvm15LLVMContextImplD1Ev 0000159d  00000000  00000000
> 00008900  2**4
> 320 .text._ZN4llvm14object_deleterINS_11LLVMContextEE4callEPv 0000003a
>  00000000  00000000  00009ea0  2**4
>
> Here is the contents of my local library directory:
>
> e0082888 at e0082888-laptop:~$ ls -1 local/lib
> libCompilerDriver.a
> libEnhancedDisassembly.a
> libEnhancedDisassembly.so
> libllvm.a
> libLLVMAlphaAsmPrinter.a
> libLLVMAlphaCodeGen.a
> libLLVMAlphaInfo.a
> libllvm_analysis.a
> libLLVMAnalysis.a
> libLLVMArchive.a
> libLLVMARMAsmParser.a
> libLLVMARMAsmPrinter.a
> libLLVMARMCodeGen.a
> libLLVMARMInfo.a
> libLLVMAsmParser.a
> libLLVMAsmPrinter.a
> libllvm_bitreader.a
> libLLVMBitReader.a
> libllvm_bitwriter.a
> libLLVMBitWriter.a
> libLLVMBlackfinAsmPrinter.a
> libLLVMBlackfinCodeGen.a
> libLLVMBlackfinInfo.a
> libLLVMCBackend.a
> libLLVMCBackendInfo.a
> libLLVMCellSPUAsmPrinter.a
> libLLVMCellSPUCodeGen.a
> libLLVMCellSPUInfo.a
> libLLVMCodeGen.a
> libLLVMCore.a
> libLLVMCppBackend.a
> libLLVMCppBackendInfo.a
> libllvm_executionengine.a
> libLLVMExecutionEngine.a
> libLLVMHello.so
> libLLVMInstCombine.a
> libLLVMInstrumentation.a
> libLLVMInterpreter.a
> libLLVMipa.a
> libLLVMipo.a
> libLLVMJIT.a
> libLLVMLinker.a
> libLLVMMBlazeAsmPrinter.a
> libLLVMMBlazeCodeGen.a
> libLLVMMBlazeInfo.a
> libLLVMMC.a
> libLLVMMCParser.a
> libLLVMMipsAsmPrinter.a
> libLLVMMipsCodeGen.a
> libLLVMMipsInfo.a
> libLLVMMSIL.a
> libLLVMMSILInfo.a
> libLLVMMSP430AsmPrinter.a
> libLLVMMSP430CodeGen.a
> libLLVMMSP430Info.a
> libLLVMPIC16AsmPrinter.a
> libLLVMPIC16CodeGen.a
> libLLVMPIC16Info.a
> libLLVMpic16passes.a
> libLLVMPowerPCAsmPrinter.a
> libLLVMPowerPCCodeGen.a
> libLLVMPowerPCInfo.a
> libllvm_scalar_opts.a
> libLLVMScalarOpts.a
> libLLVMSelectionDAG.a
> libLLVMSparcAsmPrinter.a
> libLLVMSparcCodeGen.a
> libLLVMSparcInfo.a
> libLLVMSupport.a
> libLLVMSystem.a
> libLLVMSystemZAsmPrinter.a
> libLLVMSystemZCodeGen.a
> libLLVMSystemZInfo.a
> libllvm_target.a
> libLLVMTarget.a
> libLLVMTransformUtils.a
> libLLVMX86AsmParser.a
> libLLVMX86AsmPrinter.a
> libLLVMX86CodeGen.a
> libLLVMX86Disassembler.a
> libLLVMX86Info.a
> libLLVMXCoreAsmPrinter.a
> libLLVMXCoreCodeGen.a
> libLLVMXCoreInfo.a
> libLTO.a
> libLTO.so
> libplugin_llvmc_Base.a
> libplugin_llvmc_Clang.a
> libprofile_rt.so
> libUnitTestMain.a
> ocaml
>




More information about the llvm-dev mailing list