اموزش GCC

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

1 Introduction
1.1 A brief history of GCC
1.2 Major features of GCC
1.3 Programming in C and C++
1.4 Conventions used in this manual

2 Compiling a C program
2.1 Compiling a simple C program
2.2 Finding errors in a simple program
2.3 Compiling multiple source files
2.4 Compiling files independently
2.4.1 Creating object files from source files
2.4.2 Creating executables from object files
2.5 Recompiling and relinking
2.6 A simple makefile
2.7 Linking with external libraries
2.7.1 Link order of libraries
2.8 Using library header files

3 Compilation options
3.1 Setting search paths
3.1.1 Search path example
3.1.2 Environment variables
3.1.3 Extended search paths
3.2 Shared libraries and static libraries
3.3 C language standards
3.3.1 ANSI/ISO
3.3.2 Strict ANSI/ISO
3.3.3 Selecting specific standards
3.4 Warning options in -Wall
3.5 Additional warning options
3.6 Recommended warning options

4 Using the preprocessor
4.1 Defining macros
4.2 Macros with values
4.3 Preprocessing source files

5 Compiling for debugging
5.1 Examining core files
5.2 Displaying a backtrace
5.3 Setting a breakpoint
5.4 Stepping through the program
5.5 Modifying variables
5.6 Continuing execution
5.7 More information

6 Compiling with optimization
6.1 Source-level optimization
6.1.1 Common subexpression elimination
6.1.2 Function inlining
6.2 Speed-space tradeoffs
6.2.1 Loop unrolling
6.3 Scheduling
6.4 Optimization levels
6.5 Examples
6.6 Optimization and debugging
6.7 Optimization and compiler warnings

7 Compiling a C++ program
7.1 Compiling a simple C++ program
7.2 C++ compilation options
7.3 Using the C++ standard library
7.4 Templates
7.4.1 Using C++ standard library templates
7.4.2 Providing your own templates
7.4.3 Explicit template instantiation
7.4.4 The export keyword

8 Platform-specific options
8.1 Intel and AMD x86 options
8.1.1 x86 extensions
8.1.2 x86 64-bit processors
8.2 DEC Alpha options
8.3 SPARC options
8.4 POWER/PowerPC options
8.5 Multi-architecture support
8.6 Floating-point issues
8.7 Portability of signed and unsigned types

9 Troubleshooting
9.1 Help for command-line options
9.2 Version numbers
9.3 Verbose compilation
9.4 Stopping a program in an infinite loop
9.5 Preventing excessive memory usage

10 Compiler-related tools
10.1 Creating a library with the GNU archiver
10.2 Using the profiler gprof
10.3 Coverage testing with gcov

11 How the compiler works
11.1 An overview of the compilation process
11.2 The preprocessor
11.3 The compiler
11.4 The assembler
11.5 The linker

12 Examining compiled files
12.1 Identifying files
12.2 Examining the symbol table
12.3 Finding dynamically linked libraries

13 Common error messages
13.1 Preprocessor error messages
13.2 Compiler error messages
13.3 Linker error messages
13.4 Runtime error messages
//================

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

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

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

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

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

در سال 1997 شاخه ازمایشی از این کامپایلر تحت EGCS ساخته شد که بهینه سازی شده بود و هم چنین از++C پشتیبانی می کرد .در پی این کار EGCS قبول کرد که خط جدیدی از توسعه GCC شود و تمام این امکانات در نسخه 3.0 GCC که در سال 2001 انتشار پیدا کرد قرار گرفت .

در طول زمان 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”

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

دیدگاه‌ها

12 پاسخ به “اموزش GCC”

  1. arastoo.s نیم‌رخ
    arastoo.s

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

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

    ==========
    WhiteCrow1

  2. arastoo.s نیم‌رخ
    arastoo.s

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

  3. sushiyant نیم‌رخ

    موضوع خیلی جالبی را انتخاب کرده بودی ارستو جان اما نمی دونم چرا رود تمام شد :D

  4. arastoo.s نیم‌رخ
    arastoo.s

    :D هنو تمام نشده دادا بقیه رو هم بزودی منتشر می کنم :ي

    1. khajavi نیم‌رخ

      منتظر بقیش هستیم :D

  5. […] This post was mentioned on Twitter by Hamed. Hamed said: اموزش GCC: //================ An Introduction to GCC 1 Introduction 1.1 A brief history of GCC 1.2 Major featu… http://bit.ly/bifoKm […]

  6. مهدوی نیم‌رخ
    مهدوی

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

  7. مهدوی نیم‌رخ
    مهدوی

    راستی یادم رفت بگم خیلی خوب بود

  8. arastoo.s نیم‌رخ
    arastoo.s

    mahdavi shoma taj e sare mai

  9. asiieh نیم‌رخ
    asiieh

    خوب بود ولی اگه کامشو دارین برام ایمیل کنین ممنون میشم.

  10. danesh نیم‌رخ
    danesh

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

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

  11. Yolanda Dodd نیم‌رخ
    Yolanda Dodd

    Do you want to promote your ad on thousands of advertising sites every month? Pay one flat rate and get virtually unlimited traffic to your site forever! Check out our site for details: http://www.pushyouradonthousandsofsites.tech

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

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