Boost regex kann nicht verlinkt werden

8

Ich versuche gerade, eine Kontraktionshierachies-Implementierung vom KIT zu kompilieren, die Boost :: Regex benötigt. Das mitgelieferte Makefile stellt bereits sicher (und ich habe das auch manuell überprüft), dass g ++ mit dem Schalter -lboost_regex geliefert wird. Wenn die Bibliothek nicht installiert ist, wird sich g ++ beschweren.

Also habe ich die Bibliothek von meinen Paketquellen installiert und erneut versucht, sie zu kompilieren. Dieses Mal bekomme ich eine Menge Linker-Fehler bezüglich Boost :: Regex. Hier ist ein kurzer Auszug:

%Vor%

Das sieht sehr ähnlich aus, als ob der Compiler die Bibliothek überhaupt nicht gefunden hat. Wenn ich den Schalter -lboost_regex nicht anschließe, bleibt die Ausgabe unverändert (ich habe einen Hash darauf ausgeführt).

Allerdings wird der Linker mit dem -Wl,--verbose -Schalter ausgeführt, wie in nuwen MinGW + Boost- Fehler beim Verknüpfen von boost_regex zeigt an, dass die Bibliothek gefunden wurde:

%Vor%

Alles was ich weiß ist, dass dies wahrscheinlich eine andere Boost-Version ist als die, als die Software geschrieben wurde (ich weiß nicht welche. Ich benutze jetzt 1.53). Aber wenn man sich den Code anschaut, sollte er trotzdem funktionieren Arbeit. Außerdem verwende ich die Header dieser Boost-Version, so dass der Compiler sich bereits beschweren sollte, wenn sich die Funktionssignaturen geändert haben.

Wie kann ich das verlinken? Fehle ich etwas?

    
Chris 11.07.2013, 08:20
quelle

1 Antwort

16

Linker-Schalter sind in der falschen Reihenfolge. make versucht dies:

%Vor%

Das funktioniert (zumindest mit gcc 4.8.1):

%Vor%

Um den Kompilierungsfehler zu beheben, sollten Sie Zeile 6 im Makefile durch folgende ersetzen:

%Vor%     
Chris 15.07.2013, 00:43
quelle