Binutils per la Gestione dei File Oggetto

Con il pacchetto binutils iniziamo la costruzione della nostra distribuzione che personalmente ho chiamato RGPLinux versione 1.0 e che ci vedrà per molto tempo impegnati nella compilazione e creazione di oltre 1.000 pacchetti. Non è la prima volta che creo un mio sistema operativo Linux, l’inizio è stato circa 10 anni fa perché le distribuzioni classiche non mi soddisfacevano appieno ed allora ho iniziato a compilare da zero un mio sistema operativo Linux che, a mio modo di vedere, prendesse il meglio da quelle distribuzioni che mi piacevano di più. Anche oggi utilizzo la mia personalissima distribuzione Linux e voglio condividere questa mia esperienza con i miei lettori, perché ritengo che soltanto dopo aver compilato un sistema da zero varie volte si capisce il funzionamento di questo bellissimo sistema operativo.
I programmi che fanno parte di questo pacchetto servono per la gestione dei file oggetto, quindi ritroviamo un linker, un assembler ed altri strumenti:

  • addr2line – Programma che usa le informazioni di debug per trovare il file sorgente e la linea di codice associato con l’indirizzo dato.
  • ar – Crea, modifica e consente l’estrazione dei dati dagli archivi.
  • as – Un assembler che inserisce l’output di gcc nel file oggetto.
  • c++filt – Usato dal linker c++ e java per le funzioni di overload.
  • gprof – Mostra le chiamate ai dati.
  • ld – Un linker che unisce i file oggetto in un file singolo.
  • nm – Mostra la lista dei simboli in un file oggetto.
  • objcopy – Trasforma un file oggetto in un altro tipo.
  • objdump – Mostra varie informazioni su un file oggetto.
  • ranlib – Genera un indice del contenuto di un file oggetto e lo memorizza in un archivio. L’indice elenca tutti i simboli definiti nel file oggetto.
  • readelf – Mostra le informazioni riguardo al formato ELF.
  • size – Mostra le dimensioni della sezione e del file oggetto.
  • strings – Stampa, per ogni file dato, la sequenza dei caratteri stampabili; per i file oggetto stampa solo la parte iniziale e di caricamento.
  • strip – Toglie le informazioni sui simboli dai file oggetto.

Oltre a questi eseguibili il pacchetto installa anche queste librerie:

  • libiberty.a – Contiene le funzioni utilizzare dai programmi GNU: getopt, obstack, strerror, strtol e strtoul.
  • libbfd.{a,so} – Libreria per il Binary File Descriptor.
  • libopcodes.{a,so} – Libreria contenente funzioni per il preprocessore ed utile per costruire programmi come objdump.

Come ho descritto negli articoli precedenti di questa serie, ogni pacchetto viene compilato tramite un file per la shell di Linux e vi avevo anche detto come personalmente ho creato e strutturato l’ambiente di sviluppo, se ancora non l’aveste letto vi consiglio di iniziare dalla prima lezione del corso. Vi inserirò di volta in volta il sorgente per compilare il pacchetto, si tratta in pratica dello stesso metodo che utilizza ArchLinux. Dato che c’è bisogno di avere il nostro sistema collegato ad internet, vi consiglio di installare dhcpcd secondo quanto descritto in questo articolo, inoltre avremo bisogno di wget per scaricare i sorgenti e le patch, come descritto in questo articolo. Ecco inoltre il collegamento al file sorgente che ho utilizzato per compilare il pacchetto binutils ed inoltre anche quello per creare il pacchetto pkgtools, il nostro gestore base dei pacchetti.

<< Lezione Precedente – Inizio TutorialLezione Successiva >>

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Linux e contrassegnata con . Contrassegna il permalink.