2011-03-06 7 views
5

He estado trabajando en un tutorial sobre compilación de compiladores con Flex, Bison y LLVM (http://gnuu.org/2009/09/18/writing-your- propia-juguete-compilador /), y tratar de compilar el binario final falla con muchos de los siguientes errores de "referencia" indefinido:Problemas para enlazar con LLVM con un proyecto que incluye Flex y Bison

g++ -o parser `llvm-config --libs core jit native --cxxflags --ldflags` *.cpp 
/tmp/ccl0CSyi.o: In function `NBinaryOperator::codeGen(CodeGenContext&)': 
codegen.cpp:(.text+0x2ce): undefined reference to  `llvm::BinaryOperator::Create(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*,  llvm::Twine const&, llvm::BasicBlock*)' 
/tmp/ccl0CSyi.o: In function `NDouble::codeGen(CodeGenContext&)': 
codegen.cpp:(.text+0x3db): undefined reference to `llvm::getGlobalContext()' 
codegen.cpp:(.text+0x3e3): undefined reference to  `llvm::Type::getDoubleTy(llvm::LLVMContext&)' 
/tmp/ccl0CSyi.o: In function `NInteger::codeGen(CodeGenContext&)': 
... 
collect2: ld returned 1 exit status 
make: *** [parser] Error 1 

Por lo que yo sé, he incluye todo lo necesario y lo llvm- config script funciona correctamente --- ¿Alguien tiene alguna idea de cómo resolver estos errores?

Respuesta

13

Es necesario poner las bibliotecas después de los archivos de origen en la línea de comandos

+1

Gracias! Eress el mejor. – Dylon

0

Es posible utilizar:

clang++ -g -O3 toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` -o toy 

Espero que esto ayude.

+0

¿Cómo sabes que esto funciona? ¿Pudiste probar esto con el ejemplo tutorial original? – mjuarez

Cuestiones relacionadas