webentwicklung-frage-antwort-db.com.de

ld: Bibliothek für -lstdc ++ nicht gefunden

Nach der Aktualisierung der Xcode-Version auf 10.0 Beta wird der Fehler "ld: library not found for -lstdc ++. 6" angezeigt. Der gleiche Code funktioniert auch in Xcode 9.2

MacOS wurde ebenfalls auf 10.13.5 aktualisiert

24
vks

Die schnelle Lösung besteht darin, alle libstdc ++. * -Dateien von altem Xcode (9.4) auf neuen Xcode (10.x) zu kopieren.

Für Gerät:

cp /Applications/Xcode9.4.app/Contents/Developer/Developer/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhone. Plattform/Entwickler/SDKs/iPhoneOS.sdk/usr/lib /

Für den Simulator:

cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/PhoneSimulators Plattform/Entwickler/SDKs/iPhoneSimulator.sdk/usr/lib /

11
Shamsher Singh

Dieses Problem tritt beim Targeting der iOS-App auf. Es ist in der Release-Information angegeben:

Verfallserklärungen :

Das Erstellen mit libstdc ++ wurde mit Xcode 8 als veraltet eingestuft und wird in Xcode 10 bei der Ausrichtung auf iOS nicht unterstützt . C++ - Projekte müssen jetzt auf libc ++ migriert werden. Es wird empfohlen, ein Bereitstellungsziel für iOS 7 oder höher festzulegen. Neben der Änderung der Build-Einstellung für die C++ - Standardbibliothek sollten Entwickler fest codierte Linker-Flags und Zielabhängigkeiten prüfen, um Verweise auf libstdc ++ (einschließlich -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd und libstdc ++. 6.0) zu entfernen. 9.dylib). Projektabhängigkeiten wie statische Archive, die für libstdc ++ erstellt wurden, müssen auch für libc ++ neu erstellt werden. (40885260)

Quelle: Versionshinweise von XCode Beta 2

Randnotiz:
Sie müssen angemeldet sein, um auf die Seite zugreifen zu können.
Der Link könnte in der nächsten Beta-Version nicht mehr funktionieren (URLs ändern sich), befindet sich jedoch im Bereich Entwickler/Download

XCode 10 wird offiziell mit dem Versionshinweis veröffentlicht, ist aber immer noch so:

Das Erstellen mit libstdc ++ wurde mit Xcode 8 als veraltet eingestuft und wird in Xcode 10 bei der Ausrichtung auf iOS nicht unterstützt . C++ - Projekte müssen jetzt auf libc ++ migriert werden. Es wird empfohlen, ein Bereitstellungsziel von macOS 10.9 oder höher oder iOS 7 oder höher festzulegen. Neben der Änderung der Build-Einstellung für die C++ - Standardbibliothek sollten Entwickler fest codierte Linker-Flags und Zielabhängigkeiten prüfen, um Verweise auf libstdc ++ (einschließlich -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd und libstdc ++. 6.0) zu entfernen. 9.dylib). Projektabhängigkeiten wie statische Archive, die für libstdc ++ erstellt wurden, müssen auch für libc ++ neu erstellt werden. (40885260)

12
Larme

Wie oben erwähnt, wird lstdc ++ aus Xcode 10 entfernt. Um dies zu beheben,

  1. Gehen Sie zu Target -> BuildPhases -> Binary mit Bibliotheken verknüpfen

  2. Suchen Sie nach lstdc ++ und entfernen Sie es.

  3. In einigen Frameworks, die die oben genannte "lstdc ++" - Bibliothek verwenden, können Fehler auftreten. Jetzt müssen Sie entweder das Framework aktualisieren oder es entfernen, damit Xcode es erfolgreich erstellen kann.

5
rajtharan-g
  1. Wenn Sie ein externes Makefile zum Erstellen von C++ - Bibliotheken verwenden, fügen Sie Folgendes hinzu

CXXFLAGS += -stdlib=libc++ Ihr externes Bibliotheks-Makefile und entfernte Instanzen von -stdlib=stdlibc++

  1. Wenn nicht, ignorieren Sie den obigen Schritt und gehen Sie zu Projekt> Ziel> Binär mit Bibliotheken verknüpfen>
    • Entfernen Sie (-) libstdc ++. 6.0.9.tbd
    • Fügen Sie (+) libc ++. Tbd hinzu
4
ir2pid

Dies schlug für mich fehl, als ich versuchte, ein make install. Stattdessen lief ich make install -stdlib=libc++, was den Trick gemacht hat.

0
user394430