Il mio programma è costruito come un caricatore e molti moduli che sono librerie condivise. Ora una di queste librerie utilizza pthreads e sembra legata al modulo in modo dinamico (caricata all'avvio). Ora sarebbe più semplice se potessi forzare il collegamento di pthreads nel file del modulo. GCC su Linux, come faccio? Immagino che un libpthread.a sia necessario ....Forza GCC a collegamento statico, ad es. pthreads (e non collegamento dinamico)
risposta
Mentre il collegamento di libpthread.a
in una libreria condivisa è teoricamente possibile, è una pessima idea. Il motivo è che libpthread
fa parte di glibc
e tutte parti di glibc
devono corrispondere esattamente a oppure si verificano arresti anomali e non spiegabili.
Quindi collega libpthread.a
nella tua libreria condivisa volontà:
- causare il crash del programma quando viene spostato a una macchina con una versione diversa di
glibc
- causare il programma esistente in crash quando della macchina corrente
glibc
è aggiornato, ma il modulo non è ricollegato per l'aggiornamentolibpthread.a
.
Risparmia te stesso l'irritazione e non farlo.
: o oh mio dio oh mio Dio, Bene, lo dici. Ma quando la sua parte di glibc, .../me è derped .. – imacake
Grazie. Come la risposta Una query però - Se libpthread fa parte di libc/glibc, perché viene fornito come una libreria separata. Quasi tutti i collegamenti di libs a libc e quindi, quale era allora la necessità di libpthread – Kiran
@Kiran "Perché è fornito come una libreria separata" - perché molti programmi non hanno bisogno di thread, e il collegamento in 'libpthread' impone un inutile sovraccarico su tali programmi. –
In quale istanza devi fare qualcosa di diverso da includere l'intestazione pthread per farlo compilare? Hai un esempio di fonte? Questo metodo di compilazione di un assoluto deve? –