Skip to content

Latest commit

 

History

History
125 lines (80 loc) · 9.66 KB

File metadata and controls

125 lines (80 loc) · 9.66 KB

Build from Source

‫خیلی از برنامه‌های اجرایی با زبان‌های c و fortran و … نوشته شده‌اند. برای نصب کردن این برنامه‌ها روی سیستم عامل لینوکس راه‌های مختلفی پیش رو داریم.‬
‫مثلاً می‌توان از بسته های آماده نصب با پسوند ‪.deb‬ یا ‪.rpm‬ به طور مستقیم استفاده کرد. ‬
‫یکی دیگر از راه‌های نصب این است که این برنامه‌ها را از اول و با استفاده از کدهای منبع‌شان ساخته شوند. یعنی یک source code را از ابتدا روی سیستم compile کرده و برنامه را طوری build کنیم که تبدیل به یک فایل باینری قابل اجرا برای ماشین ما بشود.‬

‫برای کامپایل کردن برنامه‌ از کدهای منبع آن، می‌توان به طور مستقیم از کامپایلرهایی مثل gcc یا gfortran استفاده کرد، اما اگر برنامه‌ی اجرایی موردنظر، برنامه بزرگ و سنگینی باشد، با تعداد زیادی فایل برای کامپایل کردن مواجه‌ایم و همچنین باید به ارتباط بین فایل ها و نیاز به کامپایل شدن بعضی از sourse codeها قبل از بعضی دیگر،‌ برای استفاده‌ی از آن در بقیه فایل ها، ‌توجه کرد.‬

‫برای اجتناب از این پیچیدگی ها و جلوگیری از اشتباه در مراحل build کردن برنامه، فرآیند ساخت فایل اجرایی از کدهای منبع را اتوماتیک کرده اند.‬

‫به فرآیندِ ساخت اتوماتیکِ یک برنامه‌ی قابل اجرا از کدهای منبع build automation می گویند.‬

‫ابزار های زیادی برای build automation ساخته شده است (برای آشنایی بیشتر به این صفحه مراجعه کنید).

GNU Make و CMake دو تا از ابزار های build automation هستند که open source اند و محبوب در جامعه لینوکسی ها. در سیستم‌های مبتنی بر ‌Unix به طور گسترده‌ای از این دو ابزار استفاده می شود.‬

‫make ‪(cmake)‬ یکی از ابزارهای ساختن فایل‌های اجرایی از source codeها می‌باشد.‬
‫همراه با برنامه‌هایی که با make ‪(cmake)‬، به صورت خودکار build می‌شوند، یک ‌makefile ضمیمه شده است که در آن روند کامپایل بخش‌های مختلف برنامه بر اساس پیشنیازهای آن مشخص شده است.‬
‫کار ابزار make ‪(cmake)‬ این است که با خواندن این makefile و اجرای دستورالعمل خاص برنامه، فایل‌ها و بخش‌های مختلف برنامه را کامپایل ‌کند.
‫(یعنی ‫کاربران بدون داشتن دانش فنی لازم هم می توانند برنامه را کامپایل و نصب کنند. زیرا جزئیات مراحل نصب در makefile نوشته شده و نیاز به پی‌گیری مستقیم کاربر ندارد.)‬
‫در نهایت برنامه را کاملاً اتوماتیک build کرده و یک فایل اجرایی با قابلیت run شدن در ماشین،تحویل می‌دهد.‬

‫از ابزار make ‪(cmake)‬ علاوه بر کامپایل کردن برنامه‌ها، می‌توان ‌در به‌روزرسانی خودکار بعضی از ‌source code های تغییر یافته و فایل‌های مرتبط با آن‌ها هم استفاده کرد.‬
‫همچنین این ابزار علاوه بر ساخت یک برنامه، در کنترل روند نصب یا حذف برنامه نیز کاربرد دارد.‬‬

‫یکی از مزیت های build کردن برنامه از کدهای منبع آن این است که فایل باینری اجرایی نهایی برنامه نسبت به ماشین شما optimize می‌شود.‬
‫شما می توانید فایل اجرایی را به طور مستقیم از ماشین دیگری به ماشین خود منتقل کنید،‌ اما توجه داشته باشید که این فایل‌ها binary portable نیستند، یعنی اینکه سیستم قبلی، suorce codeها را با توجه به مشخصات CPU خود build و compile کرده،‌ و اجرای آن برنامه هرچند روی سیستم شما ممکن است اما بهینه نیست.
‫یکی از وظایف compilerها، optimize کردن فایل‌های اجرایی با توجه به مشخصات سیستم و پردازنده‌ها است.‬


‫روش نصب build automation tools

‫برای نصب این ابزار ها بر روی سیستم خود از دستورات زیر استفاده کنید:‬

# apt install make
# apt install cmake

‫برای دیدن امکانات و آشنایی با پارامتر های بیشتر دستور make و cmake، از دستورات زیر استفاده کنید:‬

$ make --help
$ cmake --help

و یا

$ man cmake
$ man make

build automation with Make (CMake)

۱- دانلود بسته‌‌ی حاوی کد منبع

‫این بسته ها معمولاً به صورت فشرده و با پسوند ‪.tar.gz‬ در دسترس هستند.‬

۲- باز کردن فایل فشرده

‫بسته‌ی ‪.tar.gz‬ ای که دانلود می‌شود شامل مجموعه‌ای از چند فایل است که فشرده شده‌اند. این بسته را با دستور زیر از حالت فشرده خارج کنید.‬

$ gzip -d <FILENAME>.tar.gz

‫با استفاده از دستور زیر تمام فایل‌های موجود در بسته‌ی ‪.tar‬ را در یک فولدر ‌در محل دایرکتوری جاری باز نمایید.‬

$ tar xvf <FILENAME>.tar

3- ‫پیکربندی و تنظیمات

‫ وارد فولدر مربوطه شوید. معمولاً همراه با بسته، فایلی به نام INSTALL یا README ارائه شده که درباره مراحل نصب یا پیکربندی توضیحات لازم را می‌دهد.‫
‫برای پیکربندی بسته از دستور زیر استفاده نمایید:‬

$ ./configure

‫با این دستور تمام نیازهای برنامه بررسی شده و کتابخانه‌ها و سایر برنامه‌های جانبی لازم برای کامپایل کردن از کدهای منبع، دانلود و آماده می‌شود. همچنین این دستور بسته را برای کامپایل شدن آماده کرده و فایل‌های لازم برای build کردن برنامه را ایجاد کرده و آرگومان های دریافتی را در فایلهای مربوط به خودشان قرار می‌دهد.‬ ‫(ممکن است برای پیکربندی بسته لازم باشد تا آرگومان‌های دیگری به دستور configure اضافه شود که در این صورت در فایل README ذکر شده است.)‬

4- ‫‌Build کردن برنامه و کامپایل کد‬‫

‫ در صورتی که مرحله پیکربندی با موفقیت و بدون خطا پیش رفت،‌ به مرحله compile کردن برنامه می‌رسیم.

درصورتی که متد نصب cmake باشذ برای این منظور خارج از مسیر برنامه،‌ فولدری خالی ایجاد کرده و در آن دستور cmake‬ را با دادن آدرس دایرکتوری برنامه بعد از آن‌، اجرا می کنید.

$ cmake /ABSOLUTE-ADDRESS

و در صورتی که متد نصب make باشد داخل فولدر سورس کد رفته و در آن با دستور make ‪‬کامپایل برنامه اجرا می شود.‬ $ make

‫پس از اعمال دستور فوق کامپیوتر شروع می کند به کامپایل کردن برنامه از کدهای منبع آن. این مرحله ممکن است بسته به بزرگی برنامه و سرعت کامپیوتر شما، مدتی طول بکشد.‬

5- نصب برنامه و فایل‌های اجرایی حاصل از کامپایل کد

‫‫اگر کامپایل برنامه با موفقیت انجام شده باشد،‌ تمام فایل‌های باینری لازم ایجاد شده اند. اکنون زمان آن است که این فایل‌های باینری را جای مناسب نصب کرده تا بعد بتوان آن‌ را به درستی فراخوانی نمود. برای نصب برنامه کامپایل شده از دستور زیر استفاده کنید (باید دسترسی کاربر ریشه داشته باشید) :‬

# make install

‫با اعمال این دستور فایل اجرایی و فایل‌های تنظیمات در جاهای لازم قرار گرفته و برنامه نصب می‌شود. پس از این می‌توان آن را از خط فرمان اجرا کرد.‬


‫پس به طور خلاصه با سه دستور زیر می‌توانیم تمام برنامه‌ها را از suorce code شان نصب و اجرا کنیم.‬

$ ./configure

$ make

# make install