În această secțiune urmărim să învățăm pașii pentru a compila un program, adică a-l aduce de la cod sursă la executabil. Pentru aceasta vom crea un program care verifică dacă un număr citit de la tastatură este prim sau nu.
Pașii pe care îi vom face sunt:
Creăm un fișier nou cu numele is-prime.c
cu implementarea algoritmului de verificare. Copiem codul sursă de mai jos și îl lipim în nano ca în imaginea de mai jos:
#include <stdio.h> int check_if_prime(int n) { int i; for (i = 2; i < n / 2; i++) { if (n % i == 0) { return 0; } } return 1; } int main(void) { int n; printf("Please gimme a number: "); scanf("%d", &n); if (check_if_prime(n)) { printf("%d is prime\n", n); } else { printf("%d is not prime\n", n); } return 0; }
Mai multe detalii despre folosirea editorului de text nano
găsim în capitolul Lucrul cu fișiere.
Avem fișierul cod sursă is-prime.c
și vrem să obținem un program pe care să-l rulăm pe sistemul nostru. Pentru aceasta, trebuie să compilăm fișierul is-prime.c
. Acest program este de fapt un executabil (fișier binar). Executabilele sunt fișiere care conțin instrucțiuni pe care sistemul de calcul le poate interpreta și rula.
Creăm un executabil din fișierul is-prime.c
folosind comanda gcc
: Astfel invocăm compilatorul GCC(GNU Compiler Collection) instalat anterior și îi dăm ca argument numele fișierului dorit.
student@uso:~$ gcc is-prime.c student@uso:~$ ls -l total 16 -rwxr-xr-x 1 student student 8448 Oct 26 06:34 a.out -rw-r--r-- 1 student student 406 Oct 26 06:17 is-prime.c
Așa cum vedem în rezultatul rulări comenzii ls -l
de mai sus, executabilul se numește a.out
. Acesta este numele implicit dat de GCC. Adică a.out
va fi numele tuturor fișierelor executabile generate cu GCC, indiferent de fișierul cod sursă. Rulăm executabilul a.out
în felul următor și introducem de la tastatură un număr:
student@uso:~$ ./a.out Please gimme a number: 13 13 is prime
Programul funcționează: citește un număr de la tastatură și afișează dacă acesta este prim sau nu.
Numele a.out
este implicit, deci toate programele compilate cu GCC se vor numi a.out
. Putem configura un nume diferit pentru executabilul obținut.
Spre exemplu, pentru programul care verifică dacă un număr este prim sau nu, numim executabilul is-prime
. Creăm un executabil cu numele is-prime
din fișierul is-prime.c
folosind opțiunea -o
a comenzii gcc
:
student@uso:~$ gcc -o is-prime is-prime.c student@uso:~$ ls -l total 28 -rwxr-xr-x 1 student student 8448 Oct 26 06:34 a.out -rwxr-xr-x 1 student student 8448 Oct 26 06:57 is-prime -rw-r--r-- 1 student student 406 Oct 26 06:17 is-prime.c
Opțiunea -o
urmată de numele ales pentru program (is-prime
) transmite compilatorului ca programul să se numească is-prime
, și nu a.out
. Rulăm executabilul is-prime
în felul următor și introducem de la tastatură un număr:
student@uso:~$ ./is-prime Please gimme a number: 13 13 is prime
Vedem că, deși au nume diferit, programele a.out
și is-prime
au același comportament. Acest lucru este normal deoarece ele sunt 2 fișiere executabile obținute din același fișier cod sursă obținute folosind același compilator: GCC.
is-palindrome.c
care să conțină următorul conținut:#include <stdio.h> int check_if_palindrome(int n) { int new_n = 0; int original_n = n; while (n > 0) { int r = n % 10; n /= 10; new_n = new_n * 10 + r; } return (new_n == original_n) ? 1 : 0; } int main(void) { int n; printf("Please gimme a number: "); scanf("%d", &n); if (check_if_palindrome(n)) { printf("%d is a palindrome\n", n); } else { printf("%d is not a palindrome\n", n); } return 0; }
is-palindrome.c
într-un executabil cu numele a.out
folosind gcc
. Verificați funcționalitatea programului.is-palindrome.c
într-un executabil cu numele is-palindrome
folosind gcc
. Verificați funcționalitatea programului.