Ho un programma e di una libreria statica:Come forzare gcc per collegare una libreria statica inutilizzato
// main.cpp
int main() {}
// mylib.cpp
#include <iostream>
struct S {
S() { std::cout << "Hello World\n";}
};
S s;
voglio collegare la libreria statica (libmylib.a
) per l'oggetto programma (main.o
), anche se quest'ultimo non usa alcun simbolo del primo direttamente.
I seguenti comandi non sembrano al lavoro con g++ 4.7
. Saranno eseguito senza errori o avvisi, ma a quanto pare non sarà collegata libmylib.a
:
g++ -o program main.o -Wl,--no-as-needed /path/to/libmylib.a
o
g++ -o program main.o -L/path/to/ -Wl,--no-as-needed -lmylib
Avete qualche idea migliore?
AFAIK, '-lmylib'. – chris
@chris ho reso la domanda più chiara -lmylib non modifica la situazione – Martin
Le statiche possono essere inizializzate ovunque prima di main fino alla prima chiamata a una funzione all'interno di quella unità di traduzione ... il che significa che la mai istanziazione s è valida secondo lo standard, dato che non viene mai chiamata alcuna funzione da quella unità di traduzione. –