So ermöglichen Sie -z multidefs mit g++47

Wie kann ich den linker g++ zu ermöglichen, dass mehrere Definitionen von Symbolen (wählen Sie die erste, Erscheinungsbild)?

-z multidefs Ermöglicht es, mehrere symbol-Definitionen. Standardmäßig mehrere symbol-Definitionen, die zwischen verschiebbare Objekte (.o-Dateien)
führt zu einem fatalen Fehler. Diese option unterdrückt die
Fehler und ermöglicht es, das erste symbol definition genommen werden.
Diese option ist nur gültig, wenn die-b-svr4-option angegeben ist.

Den -zmuldefs option wird nicht erkannt von g++ noch -z OPTION. Was ist der korrekte parameter? Ist es möglich?

  • sollten Sie Nagel das Problem in der ersten code, warum haben Sie mehrere Definitionen?
  • Beide ITK und opencv definieren encode-und decode-Funktionen von jasper. Dies verursacht keine Mühe, auf Linux, noch Windows, nur Mac (gcc47 von MacPorts). Der code ist nicht das problem. Ich habe es gelöst, indem compiling opencv ohne Jasper, aber ich möchte dennoch in der Lage sein, zu überwinden dieses Problem, indem es ermöglicht mehrere Definitionen der gleichen.
  • Ich glaube, ich war mit dem -Xlinker-option falsch, ich habe es, Sie für jeden parameter, ich komme zurück, um es in einer Stunde.
  • Sie haben mehrere Definitionen, die in einer compilation-unit, oder im paar? Ich war nicht in der Lage zu kompilieren mit "-z muldefs" wenn ich mehrere Definitionen in einer Datei, aber wenn ich Sie in zwei, kompiliert mit g++ -c, und dann mit g++ -z muldefs, ich habe nur Warnung "/usr/bin/ld: Warning: Größe symbol " add(int, int)' geändert von 18 im test.o bis 20, in test2.o"
  • In paar. Aber die option wird gar nicht erkannt, so dass ich glaube, ich bin der Eingabe falsch gemacht.
  • Mmh, ich habe erkannt, dass die ld -z auch ausspucken ùnrecognized option", der mir zu entdecken, dass Mac nicht verwenden, gnu ld.

InformationsquelleAutor quimnuss | 2013-07-03
Schreibe einen Kommentar