ابزارهای خودکار گنو کیست؟ توضیح بده.
ابزارهای خودکار گنو یا سیستم ساخت گنو (به انگلیسی: GNU Autotools یا GNU Build System)، یک مجموعه از ابزارهای برنامه‌نویسی طراحی شده‌است که برای کمک به ساخت بسته‌های کد منبع قابل حمل برای بسیاری از سیستم‌های شبه یونیکس ایجاد شده‌است. GNU مخفف بازگشتی «GNU's Not Unix» است.ایجاد یک برنامه نرم‌افزاری قابل حمل می‌تواند دشوار باشد: کامپایلرهای C از سیستمی به سیستمی دیگر متفاوت است. برخی توابع کتابخانه ای خاص در برخی سیستم‌ها وجود ندارند. فایل‌های هدر ممکن است نام‌های متفاوتی داشته باشند. یکی از راه‌های رسیدگی به این مسئله نوشتن کدهای شرطی است، با بلوک‌های کد انتخاب شده توسط دستورالعمل‌های پیش پردازنده (codice_1) اما این روش به دلیل طیف گسترده‌ای از محیط‌های ساخت به سرعت غیرقابل کنترل می‌شود. ابزارهای خودکار به منظور رسیدگی به این مشکل با مدیریت بیشتر ایجاد شده‌اند.ابزارهای خودکار بخشی از زنجیره ابزار گنو هستند و به‌طور گسترده‌ای در بسیاری از نرم‌افزارهای رایگان و بسته‌های منبع آزاد مورد استفاده قرار می‌گیرند. ابزارهای ایجاد کنندهٔ آن نرم‌افزارهای رایگان، تحت پروانه عمومی همگانی با استثنائات خاص مجوز که استفاده از آن را با اختصاصی کردن مالکیت برنامه فراهم کرده‌است، هستند.سیستم ساخت گنو، ساخت بسیاری از برنامه‌ها را با استفاده از یک فرایند دو مرحله ای امکان‌پذیر می‌کند: پیکر بندی و سپس ساخت.اجزاء.ابزارهای خودکار متشکل از برنامه‌های کاربردی گنو، پیکربندی خودکار، و ابزارهای لیب و همچنین ابزارهای مرتبط ای که مرتباً در کنار آنها استفاده می‌شوند شامل برنامهٔ ساخت گنو، gettext گنو، و مجموعه کامپایلرهای گنو که اغلب GCC نیز نامیده می‌شوند.پیکربندی خودکار گنو.پیکربندی خودکار یک اسکریپت codice_2 را بر اساس محتویات یک فایل codice_3 که بخش خاصی از بدنهٔ کد منبع را توصیف و مشخص می‌کند، ایجاد می‌کند. اسکریپت codice_2 ، هنگامی که اجرا می‌شود، محیط ساخت را اسکن می‌کند و یک اسکریپت فرعی codice_5 ایجاد می‌کند، که به نوبه خود، سایر فایل‌های ورودی و معمولاً codice_6 را به فایل‌های خروجی (codice_7) تبدیل می‌کند که برای آن محیط ساخت، مناسب است. سرانجام برنامه codice_8 از codice_7 برای تولید برنامه‌های اجرایی از کد منبع استفاده می‌کند.پیچیدگی ابزارهای خودکار نشان از شرایط گوناگونی دارد که تحت آن ممکن است یک بدنه از کد منبع ساخته شود.برای پردازش فایل‌ها، پیکربندی خودکار از پیاده‌سازی گنو از سیستم ماکرو استفاده می‌کنیم.پیکربندی خودکار دارای چندین برنامه کمکی مانند هدر خودکار، که کمک می‌کند به مدیریت C، اسکن خودکار، که می‌تواند یک فایل ورودی اولیه برای پیکربندی خودکار ایجاد کند و codice_19 ، که می‌تواند شناسه‌های پیش پردازنده سی مورد استفاده در برنامه را لیست کند.ساخت خودکار گنو. به ایجاد codice_7های قابل حمل کمک می‌کند، که به نوبه خود با ابزار ساخت پردازش می‌شوند. ورودی را به عنوان codice_21 می‌گیرد و آن را بهcodice_6 تبدیل می‌کند، که توسط پیکربندی اسکریپت برای تولید خروجی فایل codice_7 مورد استفاده قرار می‌گیرد. همچنین ردیابی وابستگی را به صورت خودکار را انجام می‌دهد. هر بار که یک فایل منبع کامپایل می‌شود، لیست وابستگی‌ها (به عنوان مثال، فایل‌های هدر C) ثبت می‌شود. بعداً، هر زمانی که ساخت اجرا شد و مشاهده شد که وابستگی ای تغییر کرده‌است، فایل‌های وابسته دوباره ساخته می‌شوند.ابزارهای لیب گنو.ابزارهای لیب به مدیریت ایجاد کتابخانه‌های و پویا در سیستم عامل‌های مختلف شبه یونیکس کمک می‌کند. ابزارهای لیب این را با چکیده سازی فرایند ایجاد کتابخانه، پنهان کردن تفاوت بین سیستم‌های مختلف (مانند سیستم هایگنو/ لینوکس در مقابل سولاریس) بدست آورده‌است.کتابخانه احتمالات گنو. پروسهٔ ساخت نرم‌افزار ای که از پیکربندی خودکار و ساخت خودکار قابل حمل استفاده می‌کند را برای طیف وسیعی از سیستم‌ها ساده می‌کند.کاربردها.ابزارهای خودکار کمک می‌کنند به توسعه دهندگان نرم‌افزار در نوشتن نرم‌افزارهای چندسکویی و آن را در دسترس جامعه کاربران گسترده‌تر ای قرار می‌دهند، از جمله به صورت کد منبع به آن دسته از کاربران که مایل هستند خودشان نرم‌افزار را بسازند. در بیشتر موارد، کاربران به معمولاً اسکریپت codice_2 ارائه شده را اجرا می‌کنند و سپس برنامه codice_8 را اجرا می‌کنند. آنها خودشان نیازی به نصب ابزارهای خودکار روی کامپیوتر ندارند.این می‌تواند هم برای ساخت برنامه‌های بومی روی ماشین ساخت و هم برای کامپایل متقابل با معماری‌های دیگر استفاده شود.کامپایل متقابل نرم‌افزار برای اجرا روی سرورهای ویندوز از گنو/لینوکس یا سایر سیستم‌های ساخت شبه یونیکس نیز ممکن است. استفاده از MinGW، اگرچه کامپایل بومی معمولاً روی سیستم‌های عامل مطلوب است (مانند خانواده سیستم‌های Microsoft Windows) اسکریپت پوسته بورن نمی‌تواند به تنهایی اجرا شود. این موضوع ایجاد چنین نرم‌افزارهایی را بر روی سیستم عامل‌های ویندوز سخت‌تر از سیستم‌های شبه یونیکس با پوستهٔ بورن که جزء استاندارد است، می‌کند. یک شخص می‌تواند سیستم‌های Cygwin یا MSYS را برو روی ویندوز نصب کند تا لایه سازگاری شبه یونیکس ایجاد کند، این امکان اجرای اسکریپت‌های پیکربندی را فراهم می‌کند. Cygwin همچنین مجموعه کامپایلر گنو، ساخت گنو و سایر نرم‌افزارهایی که سیستم تقریباً کامل شبه یونیکس را در ویندوز فراهم می‌کند را در اختیار قرار می‌دهد. MSYS نیز ساخت گنو و سایر ابزارهای طراحی شده برای کار با MinGW را فراهم می‌کند.اگرچه انتظار می‌رود توسعه دهنده اسکریپت پیکربندی را برای کاربر نهایی ارائه دهد، اما گاهی اوقات ممکن است کاربر بخواهد اسکریپت پیکربندی را دوباره تولید بکند. انجام چنین کاری ممکن است درصورتی که کاربر بخواهد کد منبع را اصلاح کند، لازم باشد. چنین کاربران نیاز به نصب ابزارهای خودکار دارند، برای استفاده از اجزاء مانند پیکربندی خودکار.پیکربندی خودکار ایجاد شده codice_2 می‌تواند کند باشد زیرا که برنامه‌هایی مانند کامپایلر C را برای وجود کتابخانه‌های مختلف، فایل‌های هدر و ویژگی‌های زبانی چندین بار اجرا و آزمایش می‌کند. این مسئله به ویژه روی Cygwin اثر دارد که به دلیل عدم فراخوان سیستمی بومی، ممکن است اسکریپت‌های پیکربندی بندی را به شکل قابل توجهی کندتر از لینوکس اجرا کند.انتقاد.پل هنینگ کمپ توسعه دهندهٔ سیستم‌های عامل FreeBSD ، در ستون خود برای مجلهٔ ، سیستم‌های ساخت گنو را اینگونه نقد کرد:کمپ تاریخچه سیستم ساخت را در مسائل قابل حمل ذاتی در بسیاری از انواع یونیکس های ۱۹۸۰ ترسیم می‌کند و نیاز به وجود چنین سیستم‌های ساخت ای را نادیده می‌گیرد.