اموزش GCC

//================ An Introduction to GCC

۱ Introduction
۱٫۱ A brief history of GCC
۱٫۲ Major features of GCC
۱٫۳ Programming in C and C++
۱٫۴ Conventions used in this manual

۲ Compiling a C program
۲٫۱ Compiling a simple C program
۲٫۲ Finding errors in a simple program
۲٫۳ Compiling multiple source files
۲٫۴ Compiling files independently
۲٫۴٫۱ Creating object files from source files
۲٫۴٫۲ Creating executables from object files
۲٫۵ Recompiling and relinking
۲٫۶ A simple makefile
۲٫۷ Linking with external libraries
۲٫۷٫۱ Link order of libraries
۲٫۸ Using library header files

۳ Compilation options
۳٫۱ Setting search paths
۳٫۱٫۱ Search path example
۳٫۱٫۲ Environment variables
۳٫۱٫۳ Extended search paths
۳٫۲ Shared libraries and static libraries
۳٫۳ C language standards
۳٫۳٫۱ ANSI/ISO
۳٫۳٫۲ Strict ANSI/ISO
۳٫۳٫۳ Selecting specific standards
۳٫۴ Warning options in -Wall
۳٫۵ Additional warning options
۳٫۶ Recommended warning options

۴ Using the preprocessor
۴٫۱ Defining macros
۴٫۲ Macros with values
۴٫۳ Preprocessing source files

۵ Compiling for debugging
۵٫۱ Examining core files
۵٫۲ Displaying a backtrace
۵٫۳ Setting a breakpoint
۵٫۴ Stepping through the program
۵٫۵ Modifying variables
۵٫۶ Continuing execution
۵٫۷ More information

۶ Compiling with optimization
۶٫۱ Source-level optimization
۶٫۱٫۱ Common subexpression elimination
۶٫۱٫۲ Function inlining
۶٫۲ Speed-space tradeoffs
۶٫۲٫۱ Loop unrolling
۶٫۳ Scheduling
۶٫۴ Optimization levels
۶٫۵ Examples
۶٫۶ Optimization and debugging
۶٫۷ Optimization and compiler warnings

۷ Compiling a C++ program
۷٫۱ Compiling a simple C++ program
۷٫۲ C++ compilation options
۷٫۳ Using the C++ standard library
۷٫۴ Templates
۷٫۴٫۱ Using C++ standard library templates
۷٫۴٫۲ Providing your own templates
۷٫۴٫۳ Explicit template instantiation
۷٫۴٫۴ The export keyword

۸ Platform-specific options
۸٫۱ Intel and AMD x86 options
۸٫۱٫۱ x86 extensions
۸٫۱٫۲ x86 64-bit processors
۸٫۲ DEC Alpha options
۸٫۳ SPARC options
۸٫۴ POWER/PowerPC options
۸٫۵ Multi-architecture support
۸٫۶ Floating-point issues
۸٫۷ Portability of signed and unsigned types

۹ Troubleshooting
۹٫۱ Help for command-line options
۹٫۲ Version numbers
۹٫۳ Verbose compilation
۹٫۴ Stopping a program in an infinite loop
۹٫۵ Preventing excessive memory usage

۱۰ Compiler-related tools
۱۰٫۱ Creating a library with the GNU archiver
۱۰٫۲ Using the profiler gprof
۱۰٫۳ Coverage testing with gcov

۱۱ How the compiler works
۱۱٫۱ An overview of the compilation process
۱۱٫۲ The preprocessor
۱۱٫۳ The compiler
۱۱٫۴ The assembler
۱۱٫۵ The linker

۱۲ Examining compiled files
۱۲٫۱ Identifying files
۱۲٫۲ Examining the symbol table
۱۲٫۳ Finding dynamically linked libraries

۱۳ Common error messages
۱۳٫۱ Preprocessor error messages
۱۳٫۲ Compiler error messages
۱۳٫۳ Linker error messages
۱۳٫۴ Runtime error messages
//================

خلاصه ای از تاریخچه GCC

نویسنده اصلی GCC = GNU C Compiler ریچارد استالمن و موسس پروژه گنو .
پروژه گنو در سال ۱۹۸۴ اغاز به کار کرد برای ساخت یک سیستم عامل کاملا ازاد و Unix-Like بوسیله نرم افزار ازاد .به منظور ترویج ازادی و همکاری در میان کاربران کامپیوتر و برنامه نویسان .
هر سیستم عامل Unix-Like نیاز به یک کامپایلر C دارد و در ان زمان هیچ کامپایلر C ازادی وجود نداشت , پروژه گنو (GNU) مجبور به نوشتن کامپایلر جدیدی شد که بودجه کار توسط شرکت های غیر انتفایی و بنیادهای نرم افزار ازاد برای راه اندازی ‍و حمایت پروژه گنو تامین می شد.

GCC یکی از مهم ترین اعضای سلسله برنامه های گنو است که در ابتدا فقط کامپایلری استاندارد برای گنو به شمار می رفت . ولی امروزه در بسیاری از سیستم عامل ها استفاده می شود مانند گنو لینوکس , خانواده BSD و MAC OS

اولین نسخه GCC در سال ۱۹۸۷ عرضه شد , این دست یابی خیلی مهم بود زیرا چون که به عنوان اولین کامپایلر سبک و بهینه شده که به صورت ازاد انتشار پیدا می کرد عرضه می شد .

در سال ۱۹۹۲ تجدید نظر بزرگی بروی این کامپایلز صورت گرفت که امکاناتی چون توانایی کامپایل کردن ++C به ان افزوده شد .

در سال ۱۹۹۷ شاخه ازمایشی از این کامپایلر تحت EGCS ساخته شد که بهینه سازی شده بود و هم چنین از++C پشتیبانی می کرد .در پی این کار EGCS قبول کرد که خط جدیدی از توسعه GCC شود و تمام این امکانات در نسخه ۳٫۰ GCC که در سال ۲۰۰۱ انتشار پیدا کرد قرار گرفت .

در طول زمان GCC توسعه پیدا کرد برای پشتیبانی کردن از بسیاری از زبان های دیگر مانند Fortan , java , ADA , Objective-C
در حال حاضر دیگه کلمه GCC به GNU C Compiler روجوع پیدا نمی کند بلکه به کلمه GNU Compiler collection روجوع پیدا می کند .

خصوصیات عمده GCC

در این بخش خصوصیات مهمی از GCC رو براتون یاد اوری می کنیم .
اول از همه , GCC یک کامپایلر سبک است که توانایی اجرا بروی بیشتر platform های امروزی رو دارا می باشه و هم چنین قابلیت این رو داره که متناسب با processor های امروزی خروجی تولید کنه به عبارت دیگه برای processor های خاص خروجی خاصی تولید کند به انضمام کامپیوتر های شخصی , Microcontrollers , DSPs , bit-64 CPUs .

GCC تنها یک Native compiler نیست بلکه این امکان رو داره که بروی هر platform ای اجرا بشه و فایل های executable را برای platform های دیگر تولید کند .

GCC این توانایی رو داره که نرم افزار ها را کامپایل کنیم برای سامانه های تو کاری که توانایی اجرای
Compiler رو ندارن .

GCC با زبان C نوشته شده و هم چنین قابلیت این رو هم داراست که خود را کامپایل کند که این خصیصه از GCC باعث می شود که این توانایی را داشته باشد که برای هر سیستم جدیدی تولید شود.

GCC دارای طراحی پیمانه ای است و این توانایی رو دارد که از زبان های برنامه نویسی جدید پشتیبانی کند و هم چنین قابلیت اضافه کردن معماری های جدید رو دارا می باشد

مهم ترین خصیصه GCC را می توان ازاد بودن ان دانست که تحت مجوز GNU GPL = GNU Genreral public license منتشر می شود .

برنامه نویسی با C و++ C

C و++ C زبان هایی هستند که اجازه دسترسی مستقیم به حافظه کامپیوتر را می دهد . بطور تاریخی از این زبان ها برای نوشتن نرم افزار های سیستمی low-level , یا برنامه هایی که کاربرد زیادی دارند و یا کنترلی بر منابع حساس مورد استفاده دارند استفاده می شود . هر چند که خیلی باید مراقب بود که حافظه ای به درستی در دست راس قرار گرفته باشد .

به علاوه C و++ C پروژه گنوزبان های سطح بالای دیگری مانند زبان های زیر را فراهم کرده.

GNU Common Lisp (gcl)
GNU Smalltalk (gst)
the GNU Scheme extension language (guile)
and the GNU Compiler for Java (gcj)

ین زبان ها اجازه دست مستقیم به حافظه را به کاربر به صورت مستقیم نمی دهد و برطرف میکند خطاهای احتمالی دست رسی به حافظه را , این زبان ها جای گزین های امن تری نسبت به برنامه های C و++ C است .

قرارداد های مورد استفاده در این راهنما

در این راهنما تعدادی مثال اورده شده که می توان با انها را در ترمینال وارد کرد و خروجیی را مانند خروجی زیر ببینید .

$ echo “hello world”
hello world

اولین کاراکتر , کاراکتر terminal promt هست که نباید تایپ شود . علامت $ به عنوان الگوی promt در این راحنما مورد استفاده قرار می گیرد .اگر چه ممکن است بعضی از ستیتم های دیگر از کاراکتر های دیگه استفاده کنند. از کاراکتر های ” در اول و اخر عبارت استفاده می کنیم یا به عبارت دیگر زمانی استفاده می کنیم که قصد نوشتن چند کلمه را در یک خط داریم , اگر دستور بالا رو بدون این علامت ها می نوشتیم یعنی به شکل زیر

$ echo hello world

خروجیی که داده می شد شامل فقط کلمه hello بود نه کل عبارت .
گاهیی نیز می توانیم متن یک عبارت را در چند خط بنویسیم مانند

$ echo “an example of a line which is too long to fit
in this manual”

دقت کنید که در خط اول ما جمله را با کاراکتر ” نبستیم چراکه اگر این کار را میکردیم دیگه قادر به نوشتن در خط بعدی نبودیم .

The short URL of the present article is: https://www.novid.ir/nktiY
منتشر شده در
دسته‌بندی شده در gcc،لینوکس

12 دیدگاه

  1. چیزی که مسلم هست این هست که من وقت این رو ندارم که یک جا براتون کل GCC رو معنی کنم . برای همین هر سری بخشی از GCC رو براتون معنی می کنم و توضیح میدم .

    این رو این جا نوشتم چون می خواستم اموزشم خوشگل تر بشه :ی

    ==========
    WhiteCrow1

  2. :ی ۱ چیزی یادم رفت بگم قصد این رو دارم که طبق اون فهرست بالا براتون پیش برم .

  3. جالب بود
    این قسمتش رو الان خوندم قسمت بعدش رو هم هر وقت گذاشتی یه ماه دیگه می خونم خودت می دونی که چه خبره دیگه سربازی هست و ….

  4. به علاوه C و++ C پروژه گنوزبان های سطح بالای دیگری مانند زبان های زیر را فراهم کرده.

    GNU Common Lisp (gcl)
    GNU Smalltalk (gst)
    the GNU Scheme extension language (guile)
    and the GNU Compiler for Java (gcj)
    ینی چی؟
    من میخوام iot کار کنم پس نزدیکترین دسترسی به سخت افزارو میخوام گفتن c یاد بگیرم
    الان شما نظرتون کئوم کامپایلره برای کار من؟

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *