posso costruire un eseguibile con gcc con collegamento statico:È possibile creare una libreria condivisa con la libreria utilizzata per il collegamento statico?
gcc -static xxx.c -o xxx
così posso correre xxx, senza alcuna libreria esterna dipendente.
Ma cosa succede se voglio creare una libreria condivisa senza libreria dipendente da externel? intendo dire che voglio la libreria condivisa collegata in modo statico il suo riferimento externel in
@Inshalla, penso che il problema è che Possibili possiamo collegare due .so a uno . Finora ho provato e ho fallito. –
Si veda il link "SO: combinazione di .so libs" nella mia risposta. Non sembra esserci un modo semplice per combinare le librerie dinamiche a meno che non siano state collegate con il flag '--relocatable' (vedere la manpage di ld (1)). – Inshallah
@Inshallah: se si desidera collegare un codice non PIC in un oggetto condiviso, è possibile utilizzare i flag gcc "-mimpure-text". Il codice non PIC in oggetti condivisi funziona bene ma ha alcuni compromessi (le code page non possono essere condivise tra processi e richiedono lo spazio di swap, le rilocalizzazioni rallentano il caricamento dell'oggetto condiviso anche se possono essere leggermente più veloci in runtime dato che il codice PIC è ~ 5% più lento). –