Windows

هذا الملف يصف كيفية تثبيت أو بناء واستخدام جوليا على ويندوز.

للحصول على معلومات أكثر عمومية حول جوليا، يرجى الاطلاع على main README أو documentation.

General Information for Windows

نوصي بشدة بتشغيل جوليا باستخدام تطبيق طرفية حديث، وبشكل خاص Windows Terminal، الذي يمكن تثبيته من Microsoft Store.

Line endings

تستخدم جوليا الملفات في وضع ثنائي فقط. على عكس العديد من برامج ويندوز الأخرى، إذا كتبت \n إلى ملف، ستحصل على \n في الملف، وليس نمط بت آخر. هذا يتطابق مع السلوك الذي تظهره أنظمة التشغيل الأخرى. إذا كنت قد قمت بتثبيت Git لنظام ويندوز، يُقترح، ولكن ليس مطلوبًا، أن تقوم بتكوين Git الخاص بنظامك لاستخدام نفس الاتفاقية:

git config --global core.eol lf
git config --global core.autocrlf input

أو قم بتحرير %USERPROFILE%\.gitconfig وأضف/عدل الأسطر:

[core]
    eol = lf
    autocrlf = input

Binary distribution

للحصول على ملاحظات تثبيت التوزيع الثنائي على نظام Windows، يرجى الاطلاع على التعليمات على https://julialang.org/downloads/platform/#windows.

Source distribution

Cygwin-to-MinGW cross-compiling

الطريقة الموصى بها لتجميع جوليا من المصدر على ويندوز هي عن طريق التجميع المتقاطع من Cygwin، باستخدام إصدارات من مجمعات MinGW-w64 المتاحة من خلال مدير حزم Cygwin.

  1. قم بتنزيل وتشغيل إعداد Cygwin لـ 32 bit أو 64 bit. لاحظ أنه يمكنك تجميع إما Julia 32 بت أو 64 بت من Cygwin 32 بت أو 64 بت. يحتوي Cygwin 64 بت على مجموعة أصغر قليلاً ولكن غالبًا ما تكون أكثر تحديثًا من الحزم.

    متقدم: يمكنك تخطي الخطوات 2-4 عن طريق التشغيل:

    sh setup-x86_64.exe -s <url> -q -P cmake,gcc-g++,git,make,patch,curl,m4,python3,p7zip,mingw64-i686-gcc-g++,mingw64-i686-gcc-fortran,mingw64-x86_64-gcc-g++,mingw64-x86_64-gcc-fortran

    replacing <url> with a site from https://cygwin.com/mirrors.html or run setup manually first and select a mirror.

  2. اختر موقع التثبيت ومرآة للتنزيل منها.

  3. في خطوة اختيار الحزم، اختر ما يلي:

    1. من فئة Devel: cmake, gcc-g++, git, make, patch
    2. من فئة Net: curl
    3. من فئة المترجمات (أو بايثون): m4، python3
    4. من فئة الأرشيف: p7zip
    5. لـ 32 بت جوليا، وأيضًا من فئة Devel: mingw64-i686-gcc-g++ و mingw64-i686-gcc-fortran
    6. لـ 64 بت جوليا، وأيضًا من فئة Devel: mingw64-x86_64-gcc-g++ و mingw64-x86_64-gcc-fortran
  4. اسمح لتثبيت Cygwin بالانتهاء، ثم ابدأ من الاختصار المثبت 'Cygwin Terminal'، أو 'Cygwin64 Terminal'، على التوالي.

  5. بناء جوليا ومواردها من المصدر:

    1. احصل على مصادر جوليا

      sh git clone https://github.com/JuliaLang/julia.git cd julia

      نصيحة: إذا تلقيت error: cannot fork() for fetch-pack: Resource temporarily unavailable من git، أضف alias git="env PATH=/usr/bin git" إلى ~/.bashrc وأعد تشغيل Cygwin.

    2. قم بتعيين متغير XC_HOST في Make.user للإشارة إلى تجميع MinGW-w64 المتقاطع

      ```sh echo 'XC_HOST = i686-w64-mingw32' > Make.user # for 32 bit Julia

      or

      echo 'XCHOST = x8664-w64-mingw32' > Make.user # for 64 bit Julia ```

    3. ابدأ البناء

      sh make -j 4 # Adjust the number of threads (4) to match your build environment. make -j 4 debug # This builds julia-debug.exe

  6. تشغيل جوليا باستخدام ملفات تنفيذ جوليا مباشرة

    sh usr/bin/julia.exe usr/bin/julia-debug.exe

Pro tip: build both!
make O=julia-win32 configure
make O=julia-win64 configure
echo 'XC_HOST = i686-w64-mingw32' > julia-win32/Make.user
echo 'XC_HOST = x86_64-w64-mingw32' > julia-win64/Make.user
echo 'ifeq ($(BUILDROOT),$(JULIAHOME))
        $(error "in-tree build disabled")
      endif' >> Make.user
make -C julia-win32  # build for Windows x86 in julia-win32 folder
make -C julia-win64  # build for Windows x86-64 in julia-win64 folder

Compiling with MinGW/MSYS2

MSYS2 هو بيئة توزيع وبناء البرمجيات لنظام ويندوز.

ملاحظة: يتطلب MSYS2 نظام ويندوز 64 بت 7 أو أحدث.

  1. تثبيت وتكوين MSYS2.

    1. قم بتنزيل وتشغيل أحدث مثبت لتوزيعة 64-bit. سيكون اسم المثبت شيئًا مثل msys2-x86_64-yyyymmdd.exe.

    2. افتح قشرة MSYS2. قم بتحديث قاعدة بيانات الحزم والحزم الأساسية:

      pacman -Syu

    3. اخرج وأعد تشغيل MSYS2. قم بتحديث بقية حزم القاعدة:

      pacman -Syu

    4. ثم قم بتثبيت الأدوات المطلوبة لبناء جوليا:

      pacman -S cmake diffutils git m4 make patch tar p7zip curl python

      لتثبيت إصدار x86_64 من جوليا 64 بت:

      pacman -S mingw-w64-x86_64-gcc

      لتثبيت إصدار i686 من جوليا 32 بت:

      pacman -S mingw-w64-i686-gcc

    5. تمت عملية تكوين MSYS2 بنجاح. الآن اخرج من قشرة MSYS2.

  2. قم ببناء جوليا ومواردها باستخدام الموارد المسبقة البناء.

    1. افتح ملفًا جديدًا MINGW64/MINGW32 shell. حاليًا لا يمكننا استخدام كل من mingw32 و mingw64، لذا إذا كنت ترغب في بناء إصدارات x86_64 و i686، ستحتاج إلى بنائها في كل بيئة على حدة.

    2. استنساخ مصادر جوليا:

      git clone https://github.com/JuliaLang/julia.git cd julia

    3. ابدأ البناء

      make -j$(nproc)

Pro tip: build in dir
make O=julia-mingw-w64 configure
echo 'ifeq ($(BUILDROOT),$(JULIAHOME))
        $(error "in-tree build disabled")
      endif' >> Make.user
make -C julia-mingw-w64

Cross-compiling from Unix (Linux/Mac/WSL)

يمكنك أيضًا استخدام مجمعات MinGW-w64 المتقاطعة لبناء إصدار Windows من Julia من Linux أو Mac أو Windows Subsystem for Linux (WSL).

أولاً، ستحتاج إلى التأكد من أن نظامك يحتوي على المتطلبات اللازمة. نحن بحاجة إلى wine (>=1.7.5)، ومترجم نظام، وبعض أدوات التحميل. ملاحظة: قد يتداخل تثبيت Cygwin مع هذه الطريقة إذا كنت تستخدم WSL.

على أوبونتو (على أنظمة لينكس الأخرى، من المحتمل أن تكون أسماء التبعيات مشابهة):

apt-get install wine-stable gcc wget p7zip-full winbind mingw-w64 gfortran-mingw-w64
dpkg --add-architecture i386 && apt-get update && apt-get install wine32 # add sudo to each if needed
# switch all of the following to their "-posix" variants (interactively):
for pkg in i686-w64-mingw32-g++ i686-w64-mingw32-gcc i686-w64-mingw32-gfortran x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc x86_64-w64-mingw32-gfortran; do
    sudo update-alternatives --config $pkg
done

على ماك: قم بتثبيت XCode، وأدوات سطر أوامر XCode، وX11 (الآن XQuartz)، وMacPorts أو Homebrew. ثم قم بتشغيل port install wine wget mingw-w64، أو brew install wine wget mingw-w64، حسب الاقتضاء.

ثم قم بتشغيل البناء:

  1. git clone https://github.com/JuliaLang/julia.git julia-win32
  2. cd julia-win32
  3. echo override XC_HOST = i686-w64-mingw32 >> Make.user
  4. make
  5. make win-extras (ضروري قبل تشغيل make binary-dist)
  6. make binary-dist ثم make exe لإنشاء مثبت Windows.
  7. نقل مثبت julia-*.exe إلى الجهاز المستهدف

إذا كنت تبني لنظام Windows 64-bit، فإن الخطوات هي نفسها إلى حد كبير. فقط استبدل i686 في XC_HOST بـ x86_64. (ملاحظة: على نظام Mac، يعمل wine فقط في وضع 32-bit).

Debugging a cross-compiled build under wine

الطريقة الأكثر فعالية لتصحيح نسخة مترجمة عبر الترجمة المتقاطعة من جوليا على مضيف الترجمة المتقاطعة هي تثبيت نسخة ويندوز من GDB وتشغيلها تحت واين كما هو معتاد. الحزم المسبقة البناء المتاحة as part of the MSYS2 project معروفة بأنها تعمل. بخلاف حزمة GDB، قد تحتاج أيضًا إلى حزم بايثون وترمكاب. أخيرًا، قد لا يعمل موجه GDB عند إطلاقه من سطر الأوامر. يمكن تجاوز ذلك عن طريق إضافة wineconsole إلى استدعاء GDB العادي.

After compiling

إن تجميع باستخدام أحد الخيارات أعلاه ينشئ بناءً أساسيًا لجوليا، ولكن ليس بعض المكونات الإضافية التي يتم تضمينها إذا قمت بتشغيل مثبت جوليا الكامل. إذا كنت بحاجة إلى هذه المكونات، فإن أسهل طريقة للحصول عليها هي بناء المثبت بنفسك باستخدام make win-extras متبوعًا بـ make binary-dist و make exe. ثم قم بتشغيل المثبت الناتج.

Windows Build Debugging

GDB hangs with Cygwin mintty

  • قم بتشغيل GDB تحت وحدة التحكم في Windows (cmd) بدلاً من ذلك. GDB may not function properly تحت mintty مع تطبيقات غير Cygwin. يمكنك استخدام cmd /c start لبدء وحدة التحكم في Windows من mintty إذا لزم الأمر.

GDB not attaching to the right process

  • استخدم PID من مدير مهام ويندوز أو WINPID من أمر ps بدلاً من PID من أدوات سطر الأوامر على نمط يونكس (مثل pgrep). قد تحتاج إلى إضافة عمود PID إذا لم يكن معروضًا بشكل افتراضي في مدير مهام ويندوز.

GDB not showing the right backtrace

  • عند الاتصال بعملية جوليا، قد لا يكون GDB متصلاً بالخيط الصحيح. استخدم أمر info threads لعرض جميع الخيوط و thread <threadno> للتبديل بين الخيوط.
  • تأكد من استخدام إصدار 32 بت من GDB لتصحيح بناء 32 بت من جوليا، أو إصدار 64 بت من GDB لتصحيح بناء 64 بت من جوليا.

Build process is slow/eats memory/hangs my computer

  • تعطيل خدمات Windows Superfetch و Program Compatibility Assistant، حيث يُعرف أنها تحتوي على spurious interactions مع MinGW/Cygwin.

    كما هو مذكور في الرابط أعلاه: يمكن التحقيق في استخدام الذاكرة المفرط بواسطة svchost بشكل خاص في إدارة المهام من خلال النقر على عملية svchost.exe ذات الذاكرة العالية واختيار انتقل إلى الخدمات. قم بتعطيل الخدمات الفرعية واحدة تلو الأخرى حتى يتم العثور على الجاني.

  • احذر من BLODA. الأداة vmmap لا غنى عنها لتحديد مثل هذه الصراعات البرمجية. استخدم vmmap لفحص قائمة DLLs المحملة لـ bash أو mintty أو أي عملية مستمرة أخرى تستخدم لدفع البناء. بشكل أساسي، أي DLL خارج دليل نظام Windows هو BLODA محتمل.