Repository 32bit  Forum
Repository 64bit  Wiki

[ RISOLTO ] Bash scripting: codice ostico

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[ RISOLTO ] Bash scripting: codice ostico

Messaggioda scartozzo » lun gen 24, 2011 20:31

In un momento di follia ho deciso di compilarmi un sistema LFS.
Attraverso alcuni script bash e il metodo fake install tengo traccia dei pacchetti.
Arrivato alla compilazione del gcc-4.5.1 incontro l'istruzione riportata in calce. In generale mi è chiaro che si tratta di un link simbolico da libgcc.a a libgcc_eh.a, dato che la compilazione, con l'opzione --disable-shared passata al configure, non produce gli effetti desiderati.
Dato che le mie nozioni arrivano alla comprensione di "ln -vs libgcc.a", qualcuno potrebbe aiutarmi a capire la sintassi del comando?
PS. L'obiettivo è linkare la libreria nella directory di fake install (DESTDIR).
Grazie
Codice: Seleziona tutto
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
    sed 's/libgcc/&_eh/'`



E' semplicemente un modo più raffinato del semplice link simbolico.
Ho trovato riferimento nel manuale gcc-4.5.1.
Non mi sembra si possa modificare il percorso, per il link alla libreria, previsto dal comando.
Comunque grazie.

I riferimenti alla documentazione sono i seguenti
http://lists.diy-linux.org/pipermail/diy-linux-dev/2005-June/000556.html
http://gcc.gnu.org/ml/gcc-patches/2005-02/msg00591.html
http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/Debugging-Options.html#Debugging-Options
Ultima modifica di scartozzo il mar gen 25, 2011 0:36, modificato 2 volte in totale.
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: Bash scripting: codice ostico

Messaggioda targzeta » lun gen 24, 2011 20:43

Bhé, crea un link simbolico verso un file che è l'output del comando:
Codice: Seleziona tutto
`$LFS_TGT-gcc -print-libgcc-file-name | \
    sed 's/libgcc/&_eh/'`
dove, $LFS_TGT-gcc dovrebbe essere un comando (o meglio, la variabile $LFS_TGT-gcc dovrebbe contenere il nome di un comando, presumibilmente il gcc). Prova a fare:
Codice: Seleziona tutto
gcc -print-libgcc-file-name
quindi l'output viene ridiretto a 'sed' il quale semplicemente sostituisce la stringa 'libgcc' con la stringa 'libgcc_eh'.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6189
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Bash scripting: codice ostico

Messaggioda scartozzo » lun gen 24, 2011 21:06

"LFS_TGT=$(uname -m)-lfs-linux-gnu" dovrebbe essere "la target triplet".
Al momento del comando make install sono ancora all'interno della directory dei sorgenti.
Ora, data la mia ignoranza,
1) la libreria libgcc.a dovrebbe essere installata in "/tools//lib/gcc/i686-lfs-linux-gnu/4.5.1"
ed il comando $LFS_TGT-gcc -print-libgcc-file-name restituisce l'output seguente:
/mnt/flinux/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.5.1/libgcc.a
(non mi è chiaro il significato dei puntini tra bin e lib ed il percorso della libreria in questione è il seguente /tools/lib/gcc/i686-lfs-linux-gnu/4.5.1/libgcc.a)

2) Data l'installazione con l'opzione DESTDIR come faccio a modificare il comando al fine di creare il link all'interno della "falsa installazione"?
Risolverei se il comando equivalesse ad un semplice "ls -sv libgcc.a libgcc_eh.a".
Avatar utente
scartozzo
Packager
Packager
 
Messaggi: 249
Iscritto il: mar feb 08, 2005 0:00
Località: Torino
Nome Cognome: Flavio Gallucci
Kernel: 3.10.10
Desktop: fluxbox
Distribuzione: blfs-7.4

Re: [ RISOLTO ] Bash scripting: codice ostico

Messaggioda conraid » mar gen 25, 2011 14:56

scartozzo ha scritto:"LFS_TGT=$(uname -m)-lfs-linux-gnu" dovrebbe essere "la target triplet".
Al momento del comando make install sono ancora all'interno della directory dei sorgenti.
Ora, data la mia ignoranza,
1) la libreria libgcc.a dovrebbe essere installata in "/tools//lib/gcc/i686-lfs-linux-gnu/4.5.1"
ed il comando $LFS_TGT-gcc -print-libgcc-file-name restituisce l'output seguente:
/mnt/flinux/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.5.1/libgcc.a
(non mi è chiaro il significato dei puntini tra bin e lib ed il percorso della libreria in questione è il seguente /tools/lib/gcc/i686-lfs-linux-gnu/4.5.1/libgcc.a)

2) Data l'installazione con l'opzione DESTDIR come faccio a modificare il comando al fine di creare il link all'interno della "falsa installazione"?
Risolverei se il comando equivalesse ad un semplice "ls -sv libgcc.a libgcc_eh.a".



1) i puntini servono proprio per dare il percorso giusto, nel senso che la variabile punta a bin, e siccome sai che hai bisogno di lib effettuano questo trucco per usare la variabile e posizionarsi in lib
bin/../lib
è come scrivere
lib

2) no, non risolveresti. è un procedimento simile a quando fai i link simbolici all'interno di uno slackbuild, anche se "forse" potresti fare prima un cd verso la directory interessata
cd /mnt/flinux/tools/lib/gcc/i686-lfs-linux-gnu/4.5.1/
e poi fare quel link simbolico, ma il comando ti da già il percorso completo della libreria quindi fai prima a fare così
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti