تخطَّ إلى المحتوى

mold - محرر الأداء العالي الحديث

mold - محرر الأداء العالي الحديث

mold (Modern Linker) هو بديل إسقاط في النهاية لـ GNU ld و gold و LLVM lld تم تصميمه من البداية لاستخدام كل نوى المعالج. الربط غالبًا هو ذيل متسلسل من بناء بخلاف ذلك متوازي — تجمّع 200 ملف عبر 16 نوى في عشرين ثانية، ثم انتظر على نوى واحد للربط. mold يوازي هذه الخطوة، وبالتالي يقلل أوقات الربط عادة بمقدار حجم، والتي تكون أكثر وضوحًا في حلقات التحرير والتجميع والتشغيل على أكواد C و C++ و Rust الكبيرة.

التثبيت

النظام الأساسيالأمر
Debian/Ubuntusudo apt install mold
Fedorasudo dnf install mold
Arch Linuxsudo pacman -S mold
macOS (Homebrew)brew install mold
من المصدربناء من مستودع rui314/mold
التحققmold --version

استخدام mold (ثلاث طرق)

الطريقةكيف
محولmold -run cargo build / mold -run make
علم المجمع-fuse-ld=mold (GCC 12+/Clang)
رابط رمزيأشر ld على mold (في جميع أنحاء النظام)
# الأسهل: لف أي أمر بناء
mold -run make -j$(nproc)
mold -run cargo build --release

إعدادات Rust

# ~/.cargo/config.toml أو مشروع .cargo/config.toml
[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=mold"]
النهجملاحظة
link-arg=-fuse-ld=moldقياسي، يتطلب clang أو GCC 12+
mold -run cargo buildلا توجد تغييرات في الإعدادات المطلوبة
قسم لكل هدفيبقي الأنظمة الأخرى غير متأثرة

إعدادات C/C++

# علم المجمع المباشر
gcc -fuse-ld=mold main.c -o main
clang++ -fuse-ld=mold app.cpp -o app

# CMake
cmake -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold" ..

# Makefile
LDFLAGS += -fuse-ld=mold

التحقق من استخدام mold

# التحقق من المحرر المسجل في قسم التعليق الثنائي
readelf -p .comment ./my-binary | grep -i mold

# أو الجري مع إحصائيات mold
mold -run cargo build 2>&1 | tail

خيارات مفيدة

الخيارالتأثير
--threads=Nحدد خيوط العمل
-run CMDلف أمر البناء
--perfاطبع انهيار الأداء
--statsبث إحصائيات الربط
--gc-sectionsإزالة الأقسام غير المستخدمة
--icf=allطي الكود المتطابق (ملفات ثنائية أصغر)
# شاهد أين يذهب وقت الربط
mold --perf -run cargo build --release

متى يساعد mold الأكثر

الحالةالفائدة
ملفات ثنائية كبيرة مع العديد من الكائناتأكبر الادخارات المطلقة
الإعادة المتزايدة المتكررةأكبر كسب جودة الحياة
الأبنية المنقحة (جداول رمزية كبيرة)ملحوظ جدًا
العديد من نوى المعالج المتاحةيتسع مع النوى
المشاريع الصغيرةهامشي — الربط كان بالفعل سريع

الترخيص وملاحظات النظام الأساسي

ملاحظةالتفاصيل
الترخيصMIT (الإصدارات الحديثة)
Linuxمدعوم بالكامل، الهدف الأساسي
macOSمدعوم؛ محرر Apple الخاص بهم تحسّن أيضًا
Windowsليس الهدف الأساسي

mold مقابل محررات أخرى

المحررالسرعة النسبيةملاحظة
GNU ldالخط الأساسي (أبطأ)افتراضي في العديد من الأنظمة
goldأسرع من ldتم استبدالها إلى حد كبير
lld (LLVM)أسرع بكثيرافتراضي جيد، مدعوم جيدًا
moldالأسرعالأفضل للروابط المتوازية الكبيرة

اجمع مع sccache للفوز الكامل: sccache يتجنب إعادة التجميع، mold يسرع الربط المتبقي.

الموارد