Проблемы с подключением LLVM к проекту, включая Flex и Bison - PullRequest
5 голосов
/ 06 марта 2011

Я работал над учебным пособием по написанию компиляторов с Flex, Bison и LLVM (http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/),), и попытка скомпилировать окончательный двоичный файл не удалась со многими из следующих ошибок «неопределенная ссылка»:

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

Насколько я знаю, у меня есть все необходимые включения, и скрипт llvm-config работает правильно - кто-нибудь знает, как устранить эти ошибки?

Ответы [ 2 ]

13 голосов
/ 06 марта 2011

Вам нужно поместить библиотеки ПОСЛЕ исходных файлов в командную строку

0 голосов
/ 11 апреля 2015

Вы можете использовать:

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

Надеюсь, это поможет.

...