我正在使用Linux Mint 15 Olivia,並且我在版本庫中安裝了可用的clang編譯器和libclang-dev軟件包,它們是3.2版本。在Linux上與clang/llvm庫鏈接總是失敗
我想編譯並鏈接來自ng版本庫http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_32/final/examples/clang-interpreter/main.cpp的示例,因爲您可以看到它來自鏗鏘聲版本3.2。
當我用命令編譯它:
$> clang++ `llvm-config --cflags` -c main.cpp
我得到了其中包含了一些不確定的符號鐺/ LLVM庫的文件main.o。我確信它利用納米命令包含符號:
$> nm main.o
從鐺符號將
_ZN5clang16CompilerInstanceC1Ev
到現在爲止一切運行良好,直到我試圖鏈接「main.o」文件與clang/llvm庫。當我發出命令:
$> clang++ `llvm-config --ldflags` main.o `llvm-config --libs`
它失敗,出現以下輸出(我只是把第一個錯誤,以不擾亂這個帖子):
main.o: In function `main':
main.cpp:74: undefined reference to `clang::TextDiagnosticPrinter::TextDiagnosticPrinter(llvm::raw_ostream&, clang::DiagnosticOptions*, bool)'
基本上,我得到了一大堆未定義的引用來鏗鏘圖書館。我已經嘗試過對此進行研究,並且我發現所有這一切都與您在命令行上放置庫標記的順序有關。除此之外,我也嘗試過一些其他的事情:
- 我嘗試了一堆編譯器標誌,改變其連接標誌出現的順序,他們從來沒有工作過。
- 我下載並編譯了LLVM和clang源代碼3.2和3.4版,結果相同:編譯工作,鏈接失敗。值得一提的是,對於每個版本,重新排序鏈接器標誌總是給出不同的鏈接錯誤(這當然是由於鏈接搜索庫的方式)。
我用完了想法,已經花了2個小時試圖從clang的倉庫編譯一個簡單的例子,任何幫助將不勝感激。
謝謝
感謝您的答覆,我會嘗試,只要我得到我的手我的發展電腦 – elfus
那天晚上我絕對是累了,失明....我用那個Makefile作爲例子,並且還使用了標誌的順序,因爲鐺取決於llvm,現在它編譯:) 謝謝! – elfus