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

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

लिंकेज

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

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