2011-12-09 97 views
2

當我使用命令「gcc .. ../../*.so」,有以下錯誤消息:我應該如何鏈接到LLVM庫?

/usr/bin/ld: /home/demonwnb/build/src/*.so: error: undefined reference to 'llvm::raw_ostream::operator<<(void const*)' 
/usr/bin/ld: /home/demonwnb/build/src/*.so: error: undefined reference to 'clang::DeclarationName::printName(llvm::raw_ostream&) const' 

我認爲我沒有鏈接「LLVM庫」正確的,所以我應該怎麼辦?

回答

1

您是否嘗試過使用g ++做鏈接?那些是C++庫,而gcc不會將C++庫傳遞給鏈接器。

+0

謝謝,現在已經完成。 – kunou

4

您需要告訴您的編譯器從哪裏加載庫,這可以使用llvm-config命令完成。

您可以設置下列符號在你的makefile

CC = g++ 

LLVM_MODULES = core jit native 

CPPFLAGS = `llvm-config --cppflags $(LLVM_MODULES)` 
LDFLAGS = `llvm-config --ldflags $(LLVM_MODULES)` 
LIBS = `llvm-config --libs $(LLVM_MODULES)` 

all: 
    $(CC) *.o $(LDFLAGS) $(LIBS) -o MyOutput 
main: 
    find -name '*.cpp' -print0 | xargs -0 $(CC) -c $(CPPFLAGS) 
+0

@kunou:這是使用LLVM的項目的makefile中的摘錄。你可能需要調整一下才能使它適合你的項目! –

+1

值得一提的是,LLVM將自己構建爲一組靜態庫。一些連接器對-lLVM *標誌的順序敏感,所以它被高度推薦使用llvm-config腳本。如果您使用的是CMake,則使用'llvm_map_components_to_libraries()'。 – arrowd

+0

謝謝!現在看起來很好。 – kunou