2016-08-17 6 views
7

से एलएलवीएम-आईआर को कैसे निकालें I परियोजना के लिए बाइनरी के बजाय एलएलवीएम-आईआर उत्सर्जित करने के लिए कार्गो कैसे प्राप्त कर सकता हूं? मुझे पता है कि आप rustc में ध्वज का उपयोग कर सकते हैं, लेकिन मैंने कुछ गिथब मुद्दों को पढ़ा है जो दिखाते हैं कि माल के लिए मनमाने ढंग से कंपाइलर झंडे को पार करना असंभव है।कार्गो

क्या कोई तरीका है कि मैं सीधे एलएलवीएम-आईआर उत्सर्जित करने के लिए कार्गो प्राप्त कर सकता हूं?

उत्तर

10

rustc पर कार्गो के माध्यम से मनमानी कंपाइलर झंडे पास करने के लिए cargo rustc है। तो मुझे लगता है:

cargo rustc -- --emit=llvm-ir 

वह है जो आप चाहते हैं!

+0

यह वही है [वैकल्पिक खेल का मैदान उपयोग करता है] (https://github.com/integer32llc/rust-playground/blob/374c47f24b581f062bfec1de7e5e2dba1c23e9ad/ui/src/sandbox.rs#L234)। – Shepmaster

1

संपादित करें: आपको इसके बजाय जैकब के जवाब का उपयोग करना चाहिए; बहुत आसान और कम हैकी।

सामान्य रूप से कार्गो के साथ प्रोजेक्ट बनाएं लेकिन वर्बोज आउटपुट दिखाने के लिए -v ध्वज जोड़ें। आदेश का कोई उत्पादन का उत्पादन

[email protected]:~/Documents/project$ cargo build -v 
    Fresh aster v0.22.1 
    Fresh num-traits v0.1.34 
    Fresh itoa v0.1.1 
    ... 
Compiling project v0.1.0 (file:///home/casey/Documents/project) 
Running `rustc src/main.rs --crate-name ...` 
Finished debug [unoptimized + debuginfo] target(s) in 3.54 secs 

हैं, तो अपनी परियोजना कोड में बदलाव कहीं यह पुनर्निर्माण में संकलक चाल करने के लिए है, क्योंकि यह केवल पुनर्निर्माण करेंगे, तो उस में एक परिवर्तन का पता लगाता है: आदेश इस तरह एक परिणाम होगा फाइलों में से एक।

rustc कमांड को 'rustc' चलने वाली लाइन पर 'मार्करों' के अंदर से कॉपी करें और --emit=llvm-ir इसमें संलग्न करें।

यह आपके/लक्ष्य/डीबग फ़ोल्डर में एक .ll फ़ाइल उत्पन्न करेगा।

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