2011-10-01 7 views
5

Ho un progetto sulla mia mano con alcune librerie che sono compilate come moduli caricabili, cioè collegate con il flag -module di libtool. Queste librerie dovrebbero contenere tutte le funzioni necessarie in se stesse o nelle loro dipendenze, ovvero, dovrebbero produrre un programma completo quando collegato con una semplice funzione main() che richiama semplicemente tutte le funzioni dell'interfaccia del modulo per il mio programma.Quanto è portatile collegare gli eseguibili ai moduli caricabili?

Poiché ho avuto problemi con moduli incompleti e quindi inutilizzabili, ho alcuni semplici programmi di controllo che contengono solo un main() e sono collegati ai moduli. Quando manca una funzione, il linker gracchia con gli avvisi appropriati, quindi tutto bene lì. Tuttavia, libtool mi dà un avvertimento:

*** Warning: Linking the executable checkplugin_locprec against the loadable module 
*** liblocprec.so is not portable! 

Capisco lo scopo e l'intento di questo avviso (non collegare un programma contro una biblioteca costruita con -module), tuttavia, non la sua gravità, e questa è la mia domanda:

Quanto grave è questo avviso? Sono solo fortunato che funzioni sulle piattaforme che sto compilando (i386/x86_64 Linux e MinGW) o questo avviso è pertinente solo per qualche oscura piattaforma backwood che posso tranquillamente ignorare?

+1

Fortunato. Non funzionerebbe su Mac OS X. Vedi per es. [Qui] (http://stackoverflow.com/questions/2339679/what-are-the-differences-between-so-and-dylib-on-osx). –

+0

@ n.m. Grazie per quel po '(sarebbe anche una buona risposta). Beh, se Mac OS X è il mio unico problema, sono davvero sollevato. – thiton

risposta

2

La piattaforma principale in cui questo non funziona è Mac OS X. Su altre piattaforme, in genere dovrebbe funzionare, ma potrebbe non funzionare a seconda delle altre opzioni di build utilizzate. Se hai usato libtool, probabilmente sei sicuro su altre piattaforme.