Mam program i statyczną bibliotekę:Jak zmusić gcc połączyć nieużywany biblioteka statyczna
// main.cpp
int main() {}
// mylib.cpp
#include <iostream>
struct S {
S() { std::cout << "Hello World\n";}
};
S s;
chcę połączyć statycznej biblioteki (libmylib.a
) do obiektu programu (main.o
), choć ten ostatni nie używa żadnego symbolu tego pierwszego bezpośrednio.
Następujące polecenia nie wydają się być zgodne z g++ 4.7
. Będą one działać bez jakichkolwiek błędów lub ostrzeżeń, ale widocznie libmylib.a
nie będą powiązane:
g++ -o program main.o -Wl,--no-as-needed /path/to/libmylib.a
lub
g++ -o program main.o -L/path/to/ -Wl,--no-as-needed -lmylib
Czy macie jakieś lepsze pomysły?
AFAIK, '-lmylib'. – chris
@chris Ulepszyłem pytanie -lmylib nie zmienia sytuacji – Martin
Statyczne s można zainicjować w dowolnym miejscu od przed głównym do pierwszego wywołania funkcji w tej jednostce tłumaczeniowej ... to znaczy, że nigdy nie jest tworzone wystąpienie s zgodnie ze standardem, biorąc pod uwagę, że żadna funkcja z tej jednostki tłumaczeniowej nigdy nie jest wywoływana. –