Gnu Compiler Collection (GCC) è una collezione di compilatori per scrivere programmi in C, C + +, Java, Objective-C, Fortran, Ada, Assembler e Go.

Gnu Compiler Collection (GCC) è una collezione di compilatori e fornisce un'interfaccia uniforme per scrivere programmi in C, C + +, Java, Objective-C, Fortran, Ada, Assembler e Go (a partire da Ubuntu 11.10). 

Il significato originario di GCC era GNU C Compiler, ma da allora poiché sono stati aggiunti altri linguaggi e il suo significato è stato cambiato in Gnu Compiler Collection. 

Questa guida si prefigge di aiutare nella programmazione in Ubuntu usando GCC per compilare. Non ha il fine di introdurre ai linguaggi di programmazione o di dar supporto ad essi. Per questo occorre leggere molte pagine web, guide in linea o dei buoni libri di testo.



Installazione.


Installare il pacchetto build-essential. Questo fornirà i compilatori per il linguaggio C e C++ e molti strumenti utili che gli gli sviluppatori utilizzano frequentemente. 

Per gli altri linguaggi è richiesta l'installazione dei seguenti pacchetti:
  • gcj (Java)
  • gobjc (Objective-C)
  • gfortran (Fortran)
  • gnat (Ada)
  • gccgo (Go)

Utilizzo.

La sintassi base di utilizzo è la seguente:  

gcc [parametri] nome_file_sorgente.estensione -o nome_file_output


ad esempio se si dà il comando:  

gcc -g -Wall -Wextra -pedantic-errors foo.c -o foo 

il file sorgente foo.c sarà compilato e si otterrà il file di output foo.

Una volta generato il file binario sarà possibile avviarlo da un terminale con il comando: 
./nome_file_output 


sostituendo nome_file_output con il nome del file eseguibile che si desidera avviare.

Esempio di programma.

I seguenti file, dopo essere stati compilati, mostrano sul terminale Hello World.
C++ (main.cc)
C (main.c)
Assembler (main.S)
Parametri.Ada (main.adb)

#include <iostream>
int main()
{
std::cout << "Hello World\n";
}
#include <stdio.h>
int main ()
{
printf ("Hello World\n");
}
.section .data
hello: .ascii "Hello World!\n"
.section .text
.globl _start
_start:
mov $4, %eax
mov $1, %ebx
mov $hello, %ecx
mov $13, %edx
int $0x80
mov $1, %eax
mov $0, %ebx
int $0x80
with Ada.Text_IO;
use Ada.Text_IO;

procedure main is
begin
Put_Line("Hello World!");
end main;

g++ main.cc
gcc main.c
gcc main.S
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder
gcc -c main.adb

L'ultima riga della tabella mostra il comando per mandare in compilazione il sorgente. 

E' da notare che il programma scritto in C++ è compilato dal comando g++. Il comando gcc riconosce il linguaggio di input in base all'estensione del file del sorgente (.cpp, .cc e .cxx sono tutte corrette) ma decide di non linkare la libreria standard del C++ (libstdc++). Il comando g++ fa questo in automatico e si risparmiano un sacco di sforzi.

Se nulla è stato specificato il compilatore andrà a creare un binario eseguibile chiamato di default a.out.

Parametri.

Ci sono molti parametri utili, i più importanti sono riportati nella seguente tabella.
Parametro
Spiegazione

-o
Specifica il nome del file di output (a.out è quello predefinito).

-c
Il file sorgente è solo compilato ma non non avviene in linking (terminerà con l'estensione .o).

-OX
Ottimizza il codice sorgente, il grado di ottimizzazione (indicato da X) può essere 0 (nessuno), 1 (dimensioni e velocità), 2 (velocità), 3 (velocità, aggressività o dimensioni).

-march=nativ
Ottimizzato specialmente per il processore esistente, non si avvierà su altre architetture. Non adatto per distcc.

-lXXX
Collega altre librerie (ad esempio -lncurses per libncurses)

-std=XXX
Imposta il linguaggio di programmazione predefinito (ad esempio XXX può essere c99, c1x, gnu++98, c++98 c++0x)

-ansi
Consente solo costrutti conformi ad ANSI C

-Wall
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder
Abilita avvisi utili che sono supportati dal compilatore gcc.

-Wextra
Abilita ancora più avvisi che sono supportati dal compilatore gcc.

-pedantic
Dà tutti gli avvisi richiesti dal rigoroso ISO C e ISO C + +. -pedantic-errors è simile a -pedantic, solo che sono prodotti errori anziché avvisi.

-v
Stampa i comandi e passi che il compilatore esegue esattamente (preprocessore, compilatore, assemblatore, linker...)

-g
Produce informazioni di debug nel formato nativo del sistema operativo (stabs, COFF, XCOFF, o DWARF 2). GDB può lavorare con queste informazioni di debug.

-ggdb
Produce espressioni di debug per usarle da GDB. questo significa usare il più espressivo formato disponibile (DWARF 2, stabs, o il formato nativo se nessuno di questi sono supportati), comprese le estensioni GDB, se possibile.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder
Luca Soraci

Luca Soraci

Ubuntu giunge alle nostre orecchie solo perché è stato mutuato come nome per un sistema operativo di successo; lo abbiamo sentito nei discorsi di Mandela, del vescovo Tutu, ed è uno dei concetti fondanti di quel movimento di rinascimento che vuole far fiorire il continente africano al di sopra delle difficoltà attuali.

Nessun commento:

Posta un commento

Powered by Blogger.