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

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

लिंकेज

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

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