2017-05-19 1 views
1

Unter Ubuntu mit g ++ 4.9, ich habe eine statische Bibliothek gebaut (nennen Sie es libZeroMQ.a) seinen Anweisungen folgen, und es war gebaut ohne "-flto" (Link-Zeit-Optimierung).Statisch verknüpfte ausführbare Datei mit LTO (Link Time Optimization): wie man es mit vorher gebauten Bibliotheken macht

Jetzt arbeite ich an einem Projekt (nennen Sie es MyEXE), die libZeroMQ.a verwendet, und ich werde alle Bibliotheken statisch verknüpfen. Ich möchte MyEXE mit LTO bauen.

Ich habe zwei Möglichkeiten:

A) bauen MyEXE "-flto" sowohl die Erstellung und Verknüpfung verwenden. Verknüpfen Sie mit dem zuvor erstellten libZeroMQ.a.

B) Hack (ändern) ZeroMQ die Config/Build-Skripte, fügen "-flto", und neu zu erstellen libZeroMQ.a. Erstellen Sie dann MyEXE, indem Sie mit der neuen libZeroMQ.a verknüpfen. Natürlich immer noch "-flto" in beiden kompilieren und verbinden MyEXE.

In Bezug auf die Leistung von MyEXE, denke ich:

  1. B) als A besser ist), weil es mehr Code ermöglicht (insbesondere Code in ZeroMQ) zur Optimierung zur Verknüpfungszeit berücksichtigt werden.

  2. A) ist immer noch besser als überhaupt nicht mit LTO.

Ist mein Verständnis korrekt? Vielen Dank!

Antwort

1

ich wirklich kämpfen, dies mit der Herstellung einer Antwort eher als ein Kommentar, aber es ist eine Antwort:

Ja, Ihr Verständnis ist richtig.

Verwandte Themen