mercoledì 21 novembre 2018

Compilatori: Build-essential

Compilatori: Build-essential

Andare ad installare il pacchetto build-essential, per chi non lo sapesse, significa installare tutte quelle librerie che girano intorno al mondo del C/C plusplus.

Queste librerie sono utilizzate dai programmare, per C o C++, al fine di creare un programma.

Facciamo un esempio, vogliamo stampare a video un numero, quanto il computer ce lo chiede. La sintassi di un programma scritto in C è la seguente (fig. 1):

#include <stdio.h>

int main(){
    int value;
    printf("Dammi un numero. ");
    scanf(“%d”, &value);
    printf(“Valore letto:%d\n”, value);
    return 0;
}

Ed un programma scritto in C++ (fig. 2):

#include <iostream>

using namespace std;

int main(){
    int value;
 
    cout << "Dammi un numero. ";
    
cin >> value;
    
cout << "Valore letto: " << value << endl;
    return 0;
}


Per poter eseguire questi programmi, occorre avere installato nel nostro computer le librerie, chiamate «header», per intenderci quelle che finiscono di solito con il .h
E si trovano nella nostra KDE, alla path: /usr/include/, per quanto riguarda il C; e alla path /usr/include/c++/7/, per quanto riguarda il C++.

Ecco il file header di iostream:

#ifndef _GLIBCXX_IOSTREAM
#define _GLIBCXX_IOSTREAM 1

#pragma GCC system_header

#include <bits/c++config.h>
#include <ostream>
#include <istream>

namespace std _GLIBCXX_VISIBILITY(default){
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  /**
   *  @name Standard Stream Objects
   *
   *  The &lt;iostream&gt; header declares the eight <em>standard stream
   *  objects</em>.  For other declarations, see
   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html
   *  and the @link iosfwd I/O forward declarations @endlink
   *
   *  They are required by default to cooperate with the global C
   *  library's @c FILE streams, and to be available during program
   *  startup and termination. For more information, see the section of the
   *  manual linked to above.
  */
  //@{
  extern istream cin; /// Linked to standard input
  extern ostream cout; /// Linked to standard output
  extern ostream cerr; /// Linked to standard error (unbuffered)
  extern ostream clog; /// Linked to standard error (buffered)

#ifdef _GLIBCXX_USE_WCHAR_T
  extern wistream wcin; /// Linked to standard input
  extern wostream wcout; /// Linked to standard output
  extern wostream wcerr; /// Linked to standard error (unbuffered)
  extern wostream wclog; /// Linked to standard error (buffered)
#endif
  //@}

  // For construction of filebuffers for cout, cin, cerr, clog et. al.
  static ios_base::Init __ioinit;

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

#endif /* _GLIBCXX_IOSTREAM */


...quindi occorre installare il compilatore, sul nostro pc, cioé GNU-Gcc:
"GNU, che sta per "Gnu's Not Unix" (Gnu Non è Unix), è il nome del sistema
software completo e Unix-compatibile che sto scrivendo per distribuirlo
liberamente a chiunque lo possa utilizzare. Molti altri volontari mi
stanno aiutando. Abbiamo gran necessità di contributi in tempo, denaro,
programmi e macchine."
[Richard Stallman, Dal manifesto GNU,  GNU]

Apriamo il terminale della nostra KDE e scriviamo:

$ sudo apt install build-essential

Fatto questo diamo la password e verranno installati tutti i compilatori.


Adesso per eseguire il programma, provate a copiare il programma scritto in C++ di fig. 2, e incollatelo in kate. Prendo il file in c++, perché mi piace lavorare con Qt/C++.
Poi salvate il programma nella cartella di home con estensione .cpp, ad esempio dammi.cpp.
Dopo di ché aprite il terminale e spostatevi nella cartella dove contiene il programma, scrivendo ad esempio:

$ cd /home/nome_utente/Documenti/

Fatto questo, assicuratevi di avere il programma in documenti, scrivendo:

$ ls

che vi listerà a terminale cosa contiene la cartella. Poi compiliamo il programma con:

$ g++ dammi.cpp

Poi scriviamo:

$ ./a.out

...che sarebbe il file di output, che in mancanza di un nome specifico, viene scritto di default a.out. E verrà eseguito sul terminale il programma, chiedendovi un numero e poi ve lo stampa a video.

...questo è solo un esempio, per come il nostro Linux lavora con i c/c++, nell'universo Unix. Il Gcc è utilizzato in moltissimi ambienti. E sono stato contento di avere scritto questo per il mio blog.
Spero che chi legge questo post, possa interessarsi alla programmazione in c++.

Se volete trovare info su c++, andate in qui.





Nessun commento:

Posta un commento

AVR Programming – a Step by Step Tutorial https://atmega32-avr.com/avr-programming-a-step-by-step-tutorial/