[LLVMdev] CreateGlobalStringPtr giving linker errors

Arpan Sen arpansen at gmail.com
Sun Jan 22 19:15:20 PST 2012


Hi All,

I was able to resolve the compile errors using llvm-config --cxxflags
--ldflags --libs and then applying the same to g++ command line.

Arpan

On Sun, Jan 22, 2012 at 11:26 PM, Dmitry N. Mikushin <maemarcus at gmail.com>wrote:

> Probably your g++ compiles x86_64 binary by default, but i686 dylib is
> supplied?
>
> Try:
>
> g++ -m32 e.cpp
> /Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin10/4.2.1/libllvmgcc.dylib
>
> - D.
>
> 2012/1/22 Arpan Sen <arpansen at gmail.com>:
> > Hi,
> >
> > I am trying to use some LLVM API in my C++ code, and I end up getting
> linker
> > errors. I am working on Apple MacOSX Lion. Using g++ for the compile. It
> is
> > the CreateGlobalStringPtr which is throwing the error. This is LLVM 3.0.
> >
> > Here's the codeI am trying to use some LLVM API in my C++ code, and I
> end up
> > getting linker errors. I am working on Apple MacOSX Lion. Using g++ for
> the
> > compile. It is the CreateGlobalStringPtr which is throwing the error.
> This
> > is LLVM 3.0.
> >
> > Here's the code:
> >
> > #define __STDC_LIMIT_MACROS
> > #define __STDC_CONSTANT_MACROS
> >
> > #include "llvm/Support/DataTypes.h"
> > #include "llvm/Support/IRBuilder.h"
> > #include "llvm/LLVMContext.h"
> > #include "llvm/Module.h"
> > #include "llvm/Constants.h"
> > #include "llvm/Function.h"
> > #include "llvm/BasicBlock.h"
> > int main()
> > {
> >   llvm::LLVMContext & context = llvm::getGlobalContext();
> >   llvm::Module *module = new llvm::Module("top", context);
> >   llvm::IRBuilder<> builder(context);
> >   llvm::Value *helloWorld = builder.CreateGlobalStringPtr("hello
> world!\n");
> > }
> >
> > And here's the error:
> >
> > g++ e.cpp
> >
> /Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin10/4.2.1/libllvmgcc.dylib
> > Undefined symbols for architecture x86_64:
> >   "llvm::ConstantExpr::getGetElementPtr(llvm::Constant*,
> > llvm::ArrayRef<llvm::Value*>, bool)", referenced from:
> >       llvm::ConstantExpr::getInBoundsGetElementPtr(llvm::Constant*,
> > llvm::ArrayRef<llvm::Value*>)in ccFB7xjg.o
> >   "llvm::GetElementPtrInst::getIndexedType(llvm::Type*,
> > llvm::ArrayRef<llvm::Value*>)", referenced from:
> >       llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*,
> > llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::Twine const&,
> > llvm::Instruction*)in ccFB7xjg.o
> >   "llvm::PointerType::get(llvm::Type*, unsigned int)", referenced from:
> >       llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*,
> > llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::Twine const&,
> > llvm::Instruction*)in ccFB7xjg.o
> >   "llvm::Instruction::Instruction(llvm::Type*, unsigned int, llvm::Use*,
> > unsigned int, llvm::Instruction*)", referenced from:
> >       llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*,
> > llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::Twine const&,
> > llvm::Instruction*)in ccFB7xjg.o
> >   "llvm::GetElementPtrInst::init(llvm::Value*,
> llvm::ArrayRef<llvm::Value*>,
> > llvm::Twine const&)", referenced from:
> >       llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*,
> > llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::Twine const&,
> > llvm::Instruction*)in ccFB7xjg.o
> >   "llvm::IRBuilderBase::CreateGlobalString(llvm::StringRef, llvm::Twine
> > const&)", referenced from:
> >       llvm::IRBuilder<true, llvm::ConstantFolder,
> > llvm::IRBuilderDefaultInserter<true>
> >>::CreateGlobalStringPtr(llvm::StringRef, llvm::Twine const&)in ccFB7xjg.o
> >   "llvm::ConstantInt::get(llvm::IntegerType*, unsigned long long, bool)",
> > referenced from:
> >       llvm::IRBuilder<true, llvm::ConstantFolder,
> > llvm::IRBuilderDefaultInserter<true>
> >>::CreateGlobalStringPtr(llvm::StringRef, llvm::Twine const&)in ccFB7xjg.o
> > ld: symbol(s) not found for architecture x86_64
> >
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>



-- 
Regards,
   Arpan
-----------------------------------------------------------------------------------------------------------------
Reality is merely an illusion, albeit a very persistent one.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120123/527dd3ba/attachment.html>


More information about the llvm-dev mailing list