Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-03-2008, 12:31   #1
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Dubbio su librerie dinamiche

Se eseguo il comando ldd nano ottengo la lista delle librerie utilizzate dal programma nano.
linux-gate.so.1 => (0xffffe000)
libncursesw.so.5 => /lib/libncursesw.so.5 (0xb7e9d000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d53000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d4e000)

Se nel sistema è presente libncursesw.so.6 anzichè libncursesw.so.5 nano funziona lo stesso? E' possibile creare un pacchetto contenente tutte le librerie richieste da un programma nella versione esatta richiesta e installare il tutto in una cartella senza casini? Volevo provare qualcosa del genere per un programmino realizzato da me.
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 12:40   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Sabonis Guarda i messaggi
Se nel sistema è presente libncursesw.so.6 anzichè libncursesw.so.5 nano funziona lo stesso?
Dipende, molte librerie sono retrocompatibili. Mi sembra che con le ncurses non ci siano problemi. Probabilmente però devi creare il symlink libncursesw.so.5 manualmente.

Quote:
E' possibile creare un pacchetto contenente tutte le librerie richieste da un programma nella versione esatta richiesta e installare il tutto in una cartella senza casini?
Sì ci sono tecniche per forzare il programma a usare quelle specifiche librerie.
Oppure, puoi compilare il programma con le librerie statiche.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 12:53   #3
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Grazie della disponibilità! Io pensavo di creare una cartella con tutte le librerie richieste dal programma e l'esegubile e poi modificare LD_LIBRARY_PATH per fare in modo che vada a cercare le librerie anche in quella cartella.
Supponi che io tenga solo l'esegubile nella cartella, lo lancio e lamenta la mancanza di varie librerie, se aggiungo una a una le librerie che non trova riesco a far funzionare il tutto senza problemi ma se invece copio tutte le librerie che servono (comprese quelle che esistono anche in /usr/lib o in altre cartelle di sistema) allora il programma va in segmentation fault e vanno in segmentation fault anche ls e altri comandi se li eseguo.
Nota che il programma è stato originariamente compilato in un'altra macchina e tutte queste librerie di cui ti parlo le ho prese una a una controllando l'output di ld.
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 13:02   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
No non sovrascrivere librerie di una versione differente nelle directory di sistema. Usa LD_LIBRARY_PATH, LD_PRELOAD, "-Wl,--rpath", -static...le soluzioni non mancano di certo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 13:04   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
e inoltre hai fatto un altro errore grave...non bisogna MAI sovrascrivere le librerie in uso! Devi cancellare la vecchia libreria (è ammesso anche se è in uso, l'inode non viene distrutto), e creare la libreria nuova.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 13:18   #6
gurutech
Senior Member
 
L'Avatar di gurutech
 
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1047
Quote:
Originariamente inviato da Sabonis Guarda i messaggi
Grazie della disponibilità! Io pensavo di creare una cartella con tutte le librerie richieste dal programma e l'esegubile e poi modificare LD_LIBRARY_PATH per fare in modo che vada a cercare le librerie anche in quella cartella.
Supponi che io tenga solo l'esegubile nella cartella, lo lancio e lamenta la mancanza di varie librerie, se aggiungo una a una le librerie che non trova riesco a far funzionare il tutto senza problemi ma se invece copio tutte le librerie che servono (comprese quelle che esistono anche in /usr/lib o in altre cartelle di sistema) allora il programma va in segmentation fault e vanno in segmentation fault anche ls e altri comandi se li eseguo.
Nota che il programma è stato originariamente compilato in un'altra macchina e tutte queste librerie di cui ti parlo le ho prese una a una controllando l'output di ld.
ciao,
la tecnica che dici funziona quasi sempre, io l'ho usata diverse volte. Stai solo attento a non sovrascrivere pezzi di sistema. In genere non e' una buona idea ricopiare pezzi di libc da altre parti, cerca di capire l'insieme minimo di librerie senza le quali non parte. mklibs http://packages.debian.org/unstable/devel/mklibs puo' aiutarti in questo.


Esempio: gnudoku per Debian Sarge
http://icculus.org/~jcspray/GNUDoku/
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella”
gurutech è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 13:20   #7
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Come temevo non sono riuscito a spiegarmi bene.
Allora ho una macchina A in cui compilo un programma che dipende da N librerie.

Ora voglio che il programma giri sulla macchina B. Nella macchina B creo una cartella PROVA con l'esegubile preso dalla macchina A. Se lo lancio naturalmente non funziona perchè non trova le librerie.
Provo ad aggiungere la cartella PROVA a LD_LIBRARY_PATH e aggiungo nella cartella PROVA una a una tutte le librerie che il programma non trova (librerie prese dalla macchina A), allora il programma funziona.

Il programma non funziona se invece nella cartella PROVA aggiungo tutte le librerie segnalate da ldd. In questo caso il programma va in segmentation fault così come tutti i comandi della shell.

In pratica se nella cartella PROVA copio solo le librerie che mancano nella macchina A il programma funziona, se invece ci metto tutte le librerie che segnala ldd (e quindi qualcuna magari è contemporaneamente presente in /usr/lib e in PROVA), in questo caso ho i segmentation fault.
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 13:26   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Sabonis Guarda i messaggi
Il programma non funziona se invece nella cartella PROVA aggiungo tutte le librerie segnalate da ldd. In questo caso il programma va in segmentation fault così come tutti i comandi della shell.
Comprese le librerie di sistema come le libc? Sì può capitare.
Se vuoi portarti dietro anche le libc serve un'altra variabile di ambiente, per specificare l'interpreter ld-linux.so corretto. Altrimenti di default viene usato quello in /lib, indipendentemente da LD_LIBRARY_PATH.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 15:15   #9
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Avevo copiato tutte le librerie ad eccezione di linux-gate.so.1 (che non esiste realmente come file o sbaglio?) e ld-linux.so.2....
Copio nella cartella PROVA anche ld-linux.so.2 e cambio la variabile d'ambiente che mi hai detto affinchè usi il file ld-linux.so fornito da me?
Come si chiama questa variabile d'ambiente?
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 15:35   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Non mi ricordo...

Puoi comunque invocare l'interpreter direttamente (non è una libreria qualsiasi!).
Codice:
/path/di/ld-linux.so.2 --library-path <path librerie> <path eseguibile> <parametri eseguibile>
Ad es:
./ld-linux.so.2 --library-path ./ ./myprog [args...]

Però scusa se mi ripeto -- se senti la necessità di portarti dietro tutte le librerie, perché non compili semplicemente staticamente?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 20-03-2008 alle 15:44.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 15:58   #11
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Penso che proverò a compilare staticamente ma dimmi non è sconveniente?
Non dico per la dimensione del pacchetto perchè tanto le librerie me le devo portare dietro comunque o come .so o compilate staticamente, ma per l'occupazione di memoria non è un problema? Insomma col metodo a cui stavo pensando se per caso è presente la versione esatta già in memoria non dovrebbe caricarla due volte, mentre invece se compilo staticamente si o sbaglio?
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 16:54   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Sabonis Guarda i messaggi
Penso che proverò a compilare staticamente ma dimmi non è sconveniente?
Non dico per la dimensione del pacchetto perchè tanto le librerie me le devo portare dietro comunque o come .so o compilate staticamente, ma per l'occupazione di memoria non è un problema? Insomma col metodo a cui stavo pensando se per caso è presente la versione esatta già in memoria non dovrebbe caricarla due volte, mentre invece se compilo staticamente si o sbaglio?
Ne avessi azzeccata una
L'_unico_ caso in cui il footprint può essere (globalmente) minore è se la libreria è condivisa con altri programmi diversi dal tuo. In soldoni, se stai usando le librerie native del s/o. E non perché il tuo programma occupa meno memoria, ma perché condivide del codice con altri programmi. Se ti porti dietro le tue librerie e le usi, non c'è differenza con una compilazione statica.

Se compili un eseguibile statico e lo strippi, vedrai che la sua dimensione è minore (a volte di molto!) dell'eseguibile dinamico + librerie.
L'occupazione di memoria non cambia: vanno in memoria solo le pagine necessarie all'esecuzione, indipendentemente se stanno nell'eseguibile o in qualche libreria.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 17:19   #13
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Quote:
Originariamente inviato da ilsensine Guarda i messaggi
Ne avessi azzeccata una
L'_unico_ caso in cui il footprint può essere (globalmente) minore è se la libreria è condivisa con altri programmi diversi dal tuo. In soldoni, se stai usando le librerie native del s/o. E non perché il tuo programma occupa meno memoria, ma perché condivide del codice con altri programmi.
Se ti porti dietro le tue librerie e le usi, non c'è differenza con una compilazione statica.
Ma non è quello che ho detto???!!
Quote:
Se compili un eseguibile statico e lo strippi, vedrai che la sua dimensione è minore (a volte di molto!) dell'eseguibile dinamico + librerie.
Non ne avevo idea!
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 21:46   #14
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Sabonis Guarda i messaggi
Non ne avevo idea!
Un archivio statico .a (quello che viene linkato quando indichi -static) non è altro che un insieme di file, generalmente file oggetto .o (prova ad aprirne uno con ark!)
Una libreria .so ovviamente contiene tutti gli oggetti, mentre quando fai il link statico vengono inclusi nell'eseguibile solo i .o necessari a risolvere i simboli richiesti; gli altri .o vengono scartati.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2008, 15:26   #15
Sabonis
Registered User
 
Iscritto dal: Oct 2006
Messaggi: 82
Ho notato che su due distro diverse l'output di ldd cambia..da cosa può dipendere?
Sabonis è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2008, 21:09   #16
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
ldd mostra anche le dipendenze delle librerie usate dal programma.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Pornhub e altri siti porno si ribellano ...
La TV non è smart? Amazon la trasforma c...
Oltre 200 siti di news hanno limitato l'...
Gennaio si chiude positivamente per il m...
Caos in Ubisoft: licenziato un dipendent...
BMW ed Encory avviano il riciclo diretto...
La società privata russa Space En...
HyperOS 3: al via l'ultima fase del rila...
Allarme Notepad++: compromesso per sei m...
LIGO-Virgo-KAGRA: nuovo studio sulle ond...
Usare il traffico urbano come motore per...
Sony brevetta un controller PlayStation ...
Firefox aggiunge il 'kill switch' per el...
TV OLED 2026 e Odyssey G6: Samsung abbra...
Stranger Things: Storie dal 1985 debutta...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v