[cfe-dev] undefined symbol: llvm::Triple::getDarwinNumber when linking with libLLVMSystem.a

Douglas Gregor dgregor at apple.com
Tue Sep 29 08:04:11 PDT 2009


Hello Craig,

On Sep 28, 2009, at 3:10 PM, Craig Mortensen wrote:
> I'm running into some linking problems I can't seem to solve with  
> libLLVMSystem.a (and other libraries)

This looks like a command-line ordering issue (see below):

>
> /Developer/usr/bin/llvm-g++-4.2 -arch i386 -isysroot /Developer/SDKs/ 
> MacOSX10.6.sdk -L/Users/craig/Desktop/testUsingClang/build/Debug -L/ 
> Volumes/Untitled/Projects/llvm-trunk/Release/lib -L/Volumes/Untitled/ 
> Projects/llvm-clang/llvm/Debug/lib -F/Users/craig/Desktop/ 
> testUsingClang/build/Debug -filelist /Users/craig/Desktop/ 
> testUsingClang/build/testDocumentXML.build/Debug/ 
> testDocumentXML.build/Objects-normal/i386/ 
> testDocumentXML.LinkFileList -mmacosx-version-min=10.6 -framework  
> Foundation /Volumes/Untitled/Projects/llvm-clang/llvm/Debug/lib/ 
> profile_rt.dylib /Volumes/Untitled/Projects/llvm-clang/llvm/Debug/ 
> lib/LLVMHello.dylib -lplugin_llvmc_Clang -lplugin_llvmc_Base -lLTO - 
> lLTO -lLLVMXCoreInfo -lLLVMXCoreCodeGen -lLLVMXCoreAsmPrinter - 
> lLLVMX86Info -lLLVMX86CodeGen -lLLVMX86AsmPrinter -lLLVMX86AsmParser  
> -lLLVMTransformUtils -lLLVMTarget -lLLVMSystemZInfo - 
> lLLVMSystemZCodeGen -lLLVMSystemZAsmPrinter -lLLVMSystem - 
> lLLVMSupport -lLLVMSparcInfo -lLLVMSparcCodeGen - 
> lLLVMSparcAsmPrinter -lLLVMSelectionDAG -lLLVMScalarOpts - 
> lLLVMPowerPCInfo -lLLVMPIC16Info -lLLVMPowerPCCodeGen - 
> lLLVMPowerPCAsmPrinter -lLLVMPIC16CodeGen -lLLVMPIC16AsmPrinter - 
> lLLVMMSP430Info -lLLVMMSP430CodeGen -lLLVMMSP430AsmPrinter - 
> lLLVMMSILInfo -lLLVMMSIL -lLLVMMipsInfo -lLLVMMipsCodeGen - 
> lLLVMMipsAsmPrinter -lLLVMMC -lLLVMLinker -lLLVMJIT -lLLVMipo - 
> lLLVMipa -lLLVMInterpreter -lLLVMInstrumentation - 
> lLLVMExecutionEngine -lLLVMDebugger -lLLVMCppBackendInfo - 
> lLLVMCppBackend -lLLVMCore -lLLVMCodeGen -lLLVMCellSPUInfo - 
> lLLVMCellSPUCodeGen -lLLVMCellSPUAsmPrinter -lLLVMCBackendInfo - 
> lLLVMCBackend -lLLVMBlackfinInfo -lLLVMBlackfinCodeGen - 
> lLLVMBlackfinAsmPrinter -lLLVMBitWriter -lLLVMBitReader - 
> lLLVMAsmParser -lLLVMAsmPrinter -lLLVMARMInfo -lLLVMARMCodeGen - 
> lLLVMARMAsmPrinter -lLLVMArchive -lLLVMAnalysis -lLLVMAlphaInfo - 
> lLLVMAlphaCodeGen -lLLVMAlphaAsmPrinter -lGoogleTest - 
> lCompilerDriver -lclangSema -lclangRewrite -lclangParse -lclangLex - 
> lclangIndex -lclangFrontend -lclangDriver -lclangCodeGen - 
> lclangBasic -lclangAST -lclangAnalysis -lCIndex -lCIndex -o /Users/ 
> craig/Desktop/testUsingClang/build/Debug/testDocumentXML

The Clang libraries should come before the LLVM libraries, so that  
Clang picks up all of the symbols it needs from the LLVM libraries.  
Also, you should order the "clang" libraries themselves, e.g.,

   -lclangFrontend -lclangCodeGen -lclangAnalysis -lclangRewrite - 
lclangSema -lclangAST -lclangParse -lclangLex -lclangBasic

I doubt you need to link against CodeGen or CIndex. CodeGen is only  
for LLVM IR generation, while CIndex is typically used by itself  
(without the rest of the Clang libraries).

	- Doug
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20090929/8b0d4542/attachment.html>


More information about the cfe-dev mailing list