2011-06-07 9 views
11

मुझे क्लैंग का उपयोग शुरू करने के लिए कुछ सरल उदाहरण चाहिए। मैं LLVM और बजना और निर्मित डाउनलोड किया गया:क्लैंग/उदाहरण/प्रिंटफंक्शन नाम कैसे बनाएं?

mkdir llvm-build 
cd llvm-build 
../llvm/configure 
make 

मैं बजना उदाहरण से PrintFunctionNames का निर्माण करने की कोशिश की, लेकिन एक त्रुटि संदेश मिला:

../../../../Makefile.common: 61: ../../../../Makefile.config: ऐसी कोई फ़ाइल या निर्देशिका ../../../../Makefile.common:69: /Makefile.rules: ऐसी कोई फ़ाइल नहीं या निर्देशिका बनाओ: * लक्ष्य `/Makefile.rules 'बनाने का कोई नियम नहीं है। रूक जा।

रीडेमे फ़ाइल कहती है कि केवल आवश्यकता है। तो इस प्लगइन को कैसे बनाया जाए?

उत्तर

9

llvm-build/tools/clang में जाएं, और "BUILD_EXAMPLES = 1" चलाएं।

+0

मुझे मेरी llvm बिल्ड निर्देशिका में llvm-build/tools नहीं मिल रहा है। इसमें केवल बिन है, शामिल है, lib। साझा करें? क्या कोई मदद कर सकता है? –

+0

मुझे लगता है कि उसकी बिल्ड निर्देशिका का नाम llvm-build है। मैंने इस प्रश्न के लिए मेरा उत्तर नीचे दिया है। – iwasz

2

सबसे निश्चित रूप से आपके पास एलएलवीएम ट्रंक चेकआउट होगा और आपके द्वारा क्लैंग ट्रंक की जांच की गई टूल्स पथ के तहत [क्लाउंग के निर्माण के तहत http://clang.llvm.org/get_started.html के माध्यम से समझाया गया है।

Makefile बिल्ड गाइड: http://llvm.org/docs/MakefileGuide.html

ओएस एक्स पर निर्माण की स्थापना पर कुछ भिन्न है, लेकिन डेबियन लिनक्स पर मैं इसे दैनिक निर्माण कर रहा हूँ इस प्रकार है:

../trunk/configure - सक्षम-लक्ष्य = x86_64, arm, cpp, cbe --with-built-clang --enable-pic --enable-polly --enable-shared --with-cxx-include-arch = x86_64 - सक्षम-अनुकूलित - -with-optimize-option = -Os --enable-assertions - अक्षम करने योग्य बूटस्ट्रैप - अक्षम करने योग्य-multilib --enable-jit --enable-threads --no-create --no-recursion

तब आवेदन करना टी पर मेक-जे (एन + 1 कोर की संख्या) टी वह मेरा पेंटियम डी 945 प्रणाली के लिए आदेश:

मेकअप [autotools मेकअप -j (n + 1) हमेशा सफाई से LLVM निर्माण नहीं करता है के रूप में यह cmake के खिलाफ करता है के खिलाफ निर्माण। तो यदि आप सभी कोरों को चलाने के लिए चाहते हैं, तो एक साफ निर्माण के परिणामस्वरूप मेक-जे (एन + 1) को एक से अधिक बार चलाने की संभावना की उम्मीद करें। कई कोर तक पहुँचने के बिना

स्टैंडर्ड प्रपत्र:

बनाने BUILD_EXAMPLES = '1' // नीचे

टिप्पणी हमेशा एक साफ निर्माण में जो परिणाम, और यह LLVM के लिए एक बग रिपोर्ट नहीं करता है, तो पढ़ें।

नोट: यदि आप शीर्ष स्तर पर कर रहे हैं इस प्रकार आप SVN LLVM ट्रंक, परियोजना परीक्षण ट्रंक और बजना ट्रंक अद्यतन कर सकते हैं:

कर ट्रंक

तब जाकर फिर से बनाने के चलाने के अब कि BUILD_EXAMPLES = 1 समय से पहले कॉन्फ़िगर किया गया है।

BUILD_EXAMPLES = '1' बनाने

नोट: Autotools एक BUILD_EXAMPLES = '1' कॉन्फ़िगर करने की अनुमति देगा, लेकिन झंडा उपेक्षा जब आप यदि आप स्पष्ट रूप से शामिल BUILD_EXAMPLES = '1 नहीं है चलाने के लिए जाना होगा 'कमांड लाइन बनाने के बाद।

एलएलवीएम पेड़ के शीर्ष पर आप चलने के खिलाफ बनाते हैं BUILD_EXAMPLES = '1' एलएलवीएम विशिष्ट उदाहरणों का निर्माण करेगा, फिर आपके निर्माण/उपकरण/क्लैंग पथ के अंदर जाकर आपको फिर से चलाना होगा BUILD_EXAMPLES = '1' Clang उदाहरणों का निर्माण।

इसलिए

:

LLVM शीर्ष:

बनाने BUILD_EXAMPLES = '1' // LLVM उदाहरण के लिए सीडी उपकरण/बजना बनाने BUILD_EXAMPLES = '1' // बजना विशिष्ट उदाहरण के लिए

क्लैंग के लिए एलएलवीएम और/usr/local/lib/के लिए/usr/local/bin के अंतर्गत स्थापित उदाहरणों की पुष्टि करें।

द्विआधारी उदाहरण के लिए डिफ़ॉल्ट स्थान आप CMake का उपयोग करते हैं/usr/स्थानीय/उदाहरण

0

मैं इसी तरह कल कुछ करने की कोशिश की जा रही है: get a list of methods in a class using clang और सफल रहा। शायद मेरी पोस्ट यहां भी मदद करता है। मेरी सबसे अच्छी मदद यह AST Matchers tutorial थी।

1

मैं दो अपवादों को छोड़कर http://clang.llvm.org/get_started.html पर निर्देशों का पालन किया:

  1. मेरे निर्माण dir स्रोत निर्देशिका (अर्थात सीडी LLVM; mkdir निर्माण) के अंदर है, लेकिन मैं इसे प्रासंगिक है नहीं लगता।
  2. मैं इतनी के रूप में cmake जारी:

    सीडी का निर्माण

    cmake -DLLVM_BUILD_EXAMPLES = 1 -DCLANG_BUILD_EXAMPLES = 1 ..

उसके बाद (और निश्चित रूप से संकलन (-j8 बनाने)) मैं निर्माण डीआईआर में उदाहरण पा सकता हूं:

find -iname '*printfunctionname*' 
./lib/PrintFunctionNames.so 
... 
+0

यह वास्तव में मेरे लिए काम करता है। –

संबंधित मुद्दे