Umgang mit "dyld: faul symbol binding Fehler: Symbol not found" Fehler, wenn nm nicht finden symbol

Ich habe eine fat (32 - und 64-bit) Intel binary genannt myBinary Fehler bei der Ausführung auf einer anderen workstation ausgeführt wird Mac OS X 10.8.2:

$ myBinary
dyld: lazy symbol binding failed: Symbol not found: __ZNSt8__detail15_List_node_base7_M_hookEPS0_
  Referenced from: /usr/local/bin/myBinary
  Expected in: /usr/lib/libstdc++.6.dylib

dyld: Symbol not found: __ZNSt8__detail15_List_node_base7_M_hookEPS0_
  Referenced from: /usr/local/bin/myBinary
  Expected in: /usr/lib/libstdc++.6.dylib

Trace/BPT trap: 5

Ich es kompiliert von einem Mac OS X 10.8.2 workstation mit GCC 4.7.2:

$ gcc --version
gcc (MacPorts gcc47 4.7.2_2+universal) 4.7.2

Lief ich nm und das symbol nicht definiert ist:

$ nm /usr/local/bin/myBinary | grep __ZNSt8__detail15_List_node_base7_M_hookEPS0_
     U __ZNSt8__detail15_List_node_base7_M_hookEPS0_

Hab ich was verpasst oder falsch gemacht beim kompilieren myBinary? Ich bin mir nicht sicher, was ich tun kann ein fehlendes symbol in /usr/lib/libstdc++.6.dylib — sollte ich statisch kompiliert der C++ - Bibliothek in myBinary?

  • Es scheint, dass meine Antwort nicht zu befriedigen Sie. Könnten Sie mehr details dann? Ist ein anderes system, hat GCC 4.7 installiert?
  • Wie es scheint, müssen Sie die Verknüpfung zu einer nicht-standard-libstdc++. Ich habe nicht diese Symbole in meiner Kopie. Es sollte wirklich nicht sein, in /usr/lib in diesem Fall, obwohl. Darf ich Fragen, warum Sie nicht mit clang? Warum verwenden Sie gcc von MacPorts? Warum nicht zumindest mit apples gcc?
  • Clang unterstützt einige der C++11-features, die wir verwenden. Darüber hinaus möchte ich sicherstellen, dass unsere tools können gebaut mit GCC-Compiler, und erfahren Sie, warum diese defekt ist und was ich tun kann, diese zu lösen.
Schreibe einen Kommentar