Pagina 1 di 1

[ RISOLTO ] Bash scripting: codice ostico

Inviato: lun gen 24, 2011 20:31
da scartozzo
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

Re: Bash scripting: codice ostico

Inviato: lun gen 24, 2011 20:43
da targzeta
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

Re: Bash scripting: codice ostico

Inviato: lun gen 24, 2011 21:06
da scartozzo
"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".

Re: [ RISOLTO ] Bash scripting: codice ostico

Inviato: mar gen 25, 2011 14:56
da conraid
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ì