Компиляция проекта с LLVM MAC OS X вызывает ошибку компоновщика

#c #macos #makefile #llvm

#c #macos #makefile #llvm

Вопрос:

Я установил LLVM с помощью brew

 brew install llvm
  

в тестовом файле c :

 #include <llvm/IR/Value.h>
#include <llvm/IR/IRBuilder.h>

int main()
{
    llvm::LLVMContext context;
    llvm::Module *module = new llvm::Module("module", context);

    return 0;
}

  

Makefile:

 BIN=main
SRC_FILES=main.cpp
FLAGS := $(shell llvm-config --cxxflags --ldflags --libs)

CC=/usr/local/opt/llvm/bin/clang
CXX=$(CC)  

all:
        $(CXX) $(FLAGS) -o $(BIN) $(SRC_FILES)
  

Когда я запускаю make

Это дает мне эту ошибку:

 Undefined symbols for architecture x86_64:
  "_del_curterm", referenced from:
      llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
  "_set_curterm", referenced from:
      llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
  "_setupterm", referenced from:
      llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
  "_tigetnum", referenced from:
      llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [all] Error 1
  

Что я здесь делаю не так?

Ответ №1:

В итоге мне понадобился --system-libs флаг в llvm-config команде:

 FLAGS := $(shell llvm-config --cxxflags --ldflags --libs --system-libs)