Wenn ich versuche, mit -flto
statischen Bibliotheken zu bauen, bekomme ich Fehler undefined reference:Wie kann ich lto mit statischen Bibliotheken verwenden?
library.cpp:
#include <iostream>
void foo() {
std::cout << "Test!" << std::endl;
}
main.cpp:
void foo();
int main() {
foo();
return 0;
}
Compilation Ausgabe:
$ 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
Es funktioniert gut, wenn ich mit library.o
statt library.a
verknüpfen. Was vermisse ich? Dies ist mit GCC 4.9.1 und binutils 2.24.
Haben Sie 'g ++ -flto -lary main.cpp' versucht? –
@ πάνταῥεῖ Auch gebrochen. Aber ich fand die Antwort, als ich die Frage schrieb, sie steht unten. –