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

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 लाइब्रेरी को प्राथमिकता देते हैं.