बाइनरी मॉड्यूल

rust_binary मॉड्यूल टाइप का इस्तेमाल करके, Rust बाइनरी बनाई जा सकती हैं. उदाहरण के लिए:

rust_binary {
    name: "hello_rust",
    srcs: ["src/hello_rust.rs"],
}

इसी तरह, सिर्फ़ होस्ट के लिए मॉड्यूल उपलब्ध कराने के लिए, rust_binary_host का इस्तेमाल किया जा सकता है.

rust_binary की अहम प्रॉपर्टी

अहम सामान्य प्रॉपर्टी के अलावा, ये प्रॉपर्टी भी अहम हैं. साथ ही, इनमें मॉड्यूल टाइप के लिए खास व्यवहार दिखता है:rust_binary

  • static_executable: इस बाइनरी को स्टैटिक बाइनरी के तौर पर बनाता है. साथ ही, इसका मतलब है कि prefer_rlib की वैल्यू true है. पूरी तरह से स्टैटिक एक्ज़ीक्यूटेबल सिर्फ़ बायोनिक टारगेट के लिए बनाई जा सकती हैं. नॉन-बायोनिक टारगेट के लिए, इसका मतलब सिर्फ़ यह है कि prefer_rlib की वैल्यू true है. हालांकि, यह अब भी libc और libdl को डाइनैमिक तरीके से लिंक करता है.
  • prefer_rlib: डिवाइस टारगेट के लिए, डिफ़ॉल्ट रूप से rlib लिंकेज चुनने के लिए, rustlibs लिंकेज को बदलता है. साथ ही, डिवाइस टारगेट पर libstd को rlib के तौर पर लिंक करता है. ध्यान दें कि यह होस्ट टारगेट के लिए डिफ़ॉल्ट व्यवहार है और इस पर इसका कोई असर नहीं पड़ता.

लिंकेज

डिफ़ॉल्ट रूप से, डिवाइसों को टारगेट करने वाले rust_binary मॉड्यूल हमेशा libstd के ख़िलाफ़ डाइनैमिक तरीके से लिंक किए जाते हैं. साथ ही, डिफ़ॉल्ट रूप से, rustlibs में शामिल डिपेंडेंसी के लिए dylib लाइब्रेरी को प्राथमिकता दी जाती है. हालांकि, ऐसा तब तक होता है, जब तक prefer_rlib की वैल्यू true न हो. अगर पूरी तरह से स्टैटिक बाइनरी की ज़रूरत है, तो static_executable प्रॉपर्टी देखें.

होस्ट मॉड्यूल हमेशा libstd के ख़िलाफ़ स्टैटिक तरीके से लिंक किए जाते हैं. साथ ही, डिफ़ॉल्ट रूप से, rustlibs में शामिल डिपेंडेंसी के लिए rlib लाइब्रेरी को प्राथमिकता दी जाती है.