Domanda

Ho constatato che quando mi collego un eseguibile contro una libreria statica (.a), i simboli dalla fine libreria statica per essere esportate dal file eseguibile. Vorrei evitare questo ed esportare nulla.

Ho provato che fornisce uno script di versione, ma sembra non fare differenza. Il contenuto del mio script versione sono i seguenti:

{
    global:
        main;
    local:
        *;
};

C'è un modo per non simboli da esportazione di un file eseguibile durante il collegamento in una libreria statica? Non posso ricompilare la libreria statica in sé.

È stato utile?

Soluzione

eseguibili non esportano i simboli di default, e non lo faranno a meno di utilizzare -Wl, - export-dinamica. Questo è necessario solo se si sta caricando in modo dinamico le librerie che si necessità di collegare in simboli nella eseguibile principale (questo è un caso comune in C ++, se le librerie contengono classi che sostituire i metodi virtuali nel exe)

Forse stai confondendo i simboli esportatori di avere simboli di debug. simboli di debug saranno prodotti per il beneficio del debugger (se non si striscia l'exe), ma non sono necessari per eseguire.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top