GNU/Linux >> Linux Esercitazione >  >> Linux

Perché abbiamo bisogno del file .so.1 in Linux?

Diciamo che stiamo parlando di libtest . Se ti guardi intorno, vedrai libtest.so , che è un collegamento a libtest.so.1 , che a sua volta si collega a libtest.so.1.5 .

Un eseguibile usando libtest collegherà contro libtest.so che è libtest.so.1 in questo caso (questo è scritto nell'eseguibile, vedi ldd(1) ). Se la tua distribuzione cambia libtest per correggere i bug, la nuova versione potrebbe dare libtest.so.1.6 (e dopo l'aggiornamento libtest.so.1 link ad esso, i programmi in esecuzione continueranno a utilizzare libtest.so.1.5 finché non escono). Finché non vengono apportate modifiche all'ABI, tutto funziona correttamente. E il fatto che non ci siano modifiche all'API è segnalato dal numero di versione 1 invariato.

Diciamo l'occupato libtest i castori escogitano una nuova libreria, tutta lucida, riscritta da zero, con ABI modificato. Quando l'ABI è cambiato, cambiano il numero di versione principale in 2. Installi quello e ora hai la catena libtest.so --> libtest.so.2 --> libtest.so.2.1 . Nota che ora hai entrambe le versioni 1 e 2 installate. I tuoi programmi precedenti funzionano ancora bene, usando libtest.so.1 , ma se compili un nuovo programma il compilatore (linker, in realtà) prenderà libtest.so e quindi puntare l'eseguibile al nuovo libtest.so.2.1 (a meno che non venga specificamente richiesto di utilizzare la vecchia versione, cioè).

Si noti che i numeri di versione so non devono avere alcuna relazione con i numeri di versione del codice sorgente; il numero maggiore è la versione ABI, il numero minore è facoltativo e può essere utilizzato per tenere traccia delle revisioni. Quindi qui (Fedora 20) sto usando systemd-libs-208-15.fc20.x86_64 , che fornisce libsystemd-daemon.so.0.0.10 .


Queste sono versioni diverse della stessa libreria.

Normalmente, vuoi la versione stabile più recente della libreria, quindi ti colleghi a x.so, che è collegato a quella versione più recente. Quando diventa disponibile una nuova versione, diciamo x.so.2, puoi fare in modo che tutto il tuo sistema la usi, collegando x.so a x.so.2

A volte vuoi collegarti a una vecchia versione, ad esempio se il tuo programma si basa su una stranezza che è stata corretta o se l'ultima versione ha introdotto un bug. A volte vuoi collegarti a una nuova versione sperimentale, ad esempio se la stai testando o se corregge un bug nella versione corrente. In tal caso ti collegheresti direttamente alla versione numerata, si spera come misura temporanea.


Linux
  1. Perché il mio bisogno di controllo mi ha fatto passare a Linux

  2. Linux:tutto è un file?

  3. Hai bisogno di un buon editor esadecimale per Linux

  4. Perché select è usato in Linux

  5. Perché abbiamo bisogno di un bootloader in un dispositivo integrato?

Meno comandi in Linux

Comando Gzip in Linux

Comando Gunzip in Linux

Comando Stat in Linux

Compressione file Linux:tutto ciò che devi sapere

Permessi dei file Linux:tutto ciò che devi sapere