Rust على ويندوز: إصلاح خطأ الرابط 'cc' not found في 5 دقائق

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: أول لقاء مع "التنين الأحمر"

\n\n

لقد بدأت للتو في تعلم Rust. قمت بتنزيل المترجم، وكتبت أول ملف hello.rs، وقمت بتشغيل cargo build... وفجأة ينفجر الطرفية برسالة حمراء: «linker 'cc' not found». هل هذا مألوف؟ إذا كنت تعمل على ويندوز 10 باستخدام نظام WSL مع Debian، فإن هذا الخطأ هو تحية كلاسيكية من عالم البرمجة النظامية.

\n\n

لا داعي للذعر. هذا ليس خطأ في Rust، بل هو خصوصية في إعداد البيئة. في هذه المقالة، لن نحل هذه المشكلة مرة واحدة وإلى الأبد فحسب، بل سنتحدث أيضًا عن كيفية تحسين عملية البناء لجعل الكود الخاص بك يُترجم بشكل أسرع. فـ Rust تشتهر بأدائها، ويجب أن نعطي المترجم أفضل الأدوات للعمل.

\n\n

لماذا يحدث خطأ «linker 'cc' not found»؟

\n\n

لفهم العدو، يجب أن تعرفه جيدًا. Rust هي لغة مترجمة. عندما تكتب cargo build، يقوم المترجم rustc بتحويل الكود الخاص بك إلى كود آلي. لكن المرحلة النهائية هي الربط (تجميع الملفات الكائنية في ملف تنفيذي). هذا العمل يقوم به برنامج خارجي يسمى الرابط.

\n\n

افتراضيًا في أنظمة لينكس (بما في ذلك WSL Debian)، يبحث Rust عن الرابط cc. هذا رابط رمزي، عادة ما يشير إلى gcc أو clang. إذا لم يكن مثبتًا في نظام WSL الخاص بك مترجم C (GCC أو Clang)، فإن الرابط cc غير موجود. لا يعرف Rust كيفية ربط مشروعك، ويصدر خطأ فادحًا.

\n\n

جذر المشكلة: WSL Debian - تثبيت الحد الأدنى

\n

عند تثبيت WSL Debian من متجر Microsoft، تحصل على نظام عاري. لا يحتوي على GCC ولا Make ولا أي أدوات مطور أخرى. لا يتضمن Rust رابط C - فهذه مسؤولية البيئة النظامية.

\n\n

الطريقة رقم 1: حل سريع (تثبيت GCC)

\n\n

أبسط وأصح طريقة هي تثبيت مجموعة الأدوات القياسية لتطوير C. افتح طرفية WSL Debian ونفذ:

\n\n
sudo apt update\nsudo apt install build-essential
\n\n

حزمة build-essential هي حزمة شاملة تسحب معها gcc و g++ و make والأهم من ذلك، تنشئ الرابط /usr/bin/cc. بعد التثبيت، تحقق:

\n\n
which cc\n# يجب أن يظهر: /usr/bin/cc
\n\n

الآن قم بتشغيل cargo build مرة أخرى - سيختفي الخطأ. وجد Rust الرابط.

\n\n

لماذا هذا مهم للأداء؟

\n

باستخدام GCC القياسي، تحصل على رابط مستقر ومحسّن. سيقوم Rust ببناء مشروعك بأقل تكاليف إضافية. يبدأ التحسين بالأدوات الصحيحة.

\n\n

الطريقة رقم 2: ضبط دقيق (تثبيت Clang)

\n\n

إذا كنت من محبي LLVM و Clang (و Rust يستخدم LLVM أيضًا تحت الغطاء)، يمكنك تثبيته بدلاً من GCC. قد يعطي هذا زيادة طفيفة في سرعة الربط في بعض المشاريع.

\n\n
sudo apt install clang lld\n# إنشاء الرابط يدويًا إذا لم يكن موجودًا\nsudo ln -s /usr/bin/clang /usr/bin/cc
\n\n

التحقق:

\n
cc --version\n# يجب أن يظهر Clang
\n\n

هام: LLD (رابط LLVM) غالبًا ما يعمل أسرع من GNU ld التقليدي. بالنسبة لمشاريع Rust الكبيرة، يمكن أن يقلل وقت البناء بنسبة 10-20%. تثبيت Clang ليس مجرد إصلاح للخطأ، بل هو تحسين لأداء الترجمة.

\n\n

الطريقة رقم 3: حل بديل (تحديد الرابط يدويًا)

\n\n

توجد حالات لا ترغب فيها في تثبيت GCC أو Clang (مثل خادم إنتاج بقيود). يمكنك تحديد الرابط الذي سيستخدمه Rust بشكل صريح. لكن ضع في اعتبارك: بدون تثبيت رابط، لن تعمل هذه الطريقة.

\n\n

أنشئ ملف ~/.cargo/config.toml (أو /.cargo/config.toml للإعدادات العامة):

\n\n
[target.x                

المدونات

توصيات الكتب