2016-08-29 3 views
0

Was macht die -fpic Flagge? Ich möchte eine Bibliothek installieren (OpenSFM) und es wird angegeben, dass es den Ceres Solver benötigt, der mit dem Compilerflag -fPIC erstellt und installiert wurde.Was bewirkt das Kompilierungsflag -fPIC?

Das Problem ist, dass ich bereits den Ceres Solver ohne das Flag -fPIC installiert habe und andere Bibliothek bereits davon abhing. Wie kann ich das lösen?

+0

-fPIC macht positionsunabhängigen Code für gemeinsam genutzte Bibliotheken. Alternative zu shared libraries ist die Verwendung statischer Verknüpfungen. –

+0

Das hat nichts mit CMake zu tun. '-fPIC' ist kein CMake-Flag, sondern ein Compiler-Flag. –

Antwort

1

Eine gute Erklärung für -fPIC kann here gefunden werden.

Ich denke, die Hauptfrage hier ist, ob Sie weiterhin OpenSfM installieren können, ohne Ceres Solver neu zu erstellen. Soweit ich weiß, können Sie nicht.

Die einfachste Sache, die Sie tun können, ist Ceres Solver neu zu erstellen und die PIC-Version neu zu installieren.

cmake .. -DCMAKE_C_FLAGS=fPIC \ 
    -DCMAKE_CXX_FLAGS=-fPIC \ 
    -DSOMEOTHERARGUMENTSTHATYOUMIGHTHAVE 

Lassen Sie uns wissen, wie es für Sie geklappt hat. :)

+0

Wenn ich den Ceres Solver deinstalliere und dann neu installiere, kann das die andere Bibliothek beeinflussen, die davon abhängt (in diesem Fall ist es OpenCV)? – Hilman

+0

Bibliotheken, die mit -fPIC kompiliert wurden, sollten weiterhin kompatibel sein. – bot1131357

Verwandte Themen