Quando provo a costruire librerie statiche con -flto
, ottengo errori di riferimento definiti:Come posso usare lto con le librerie statiche?
library.cpp:
#include <iostream>
void foo() {
std::cout << "Test!" << std::endl;
}
main.cpp:
void foo();
int main() {
foo();
return 0;
}
Compilation uscita:
$ g++ -flto -c library.cpp
$ ar rcs library.a library.o
$ g++ -flto main.cpp library.a
/tmp/ccZIgxCY.ltrans0.ltrans.o: In function `main':
ccZIgxCY.ltrans0.o:(.text+0x5): undefined reference to `foo()'
collect2: error: ld returned 1 exit status
Funziona bene se collego con library.o
anziché library.a
. Cosa mi manca? Questo è con GCC 4.9.1 e binutils 2.24.
Hai provato 'g ++ -flto -lrary main.cpp'? –
@ πάνταῥεῖ Anche rotto. Ma ho trovato la risposta mentre stavo scrivendo la domanda, è pubblicata qui sotto. –