Ich versuche verschiedene C lineare Algebra-Bibliotheken für meine Projekte und jetzt möchte ich BLAS (CBLAS) lernen. Ich versuche dem Tutorial here zu folgen. Ich erkannte, dass cblas bereits im Xcode gebaut und durch Hinzufügen der FlaggeCBLAS mac OS X undefinierte Symbole für Architektur x86_64 Fehler
gcc foo.c -framework Accelerate
oder
gcc foo.c -lcblas
ich die meisten Fehler entfernen kann ich vorher hatte. Allerdings gibt es einen letzten Fehler, den ich nirgendwo im Internet finden kann.
Undefined symbols for architecture x86_64:
"_printVector", referenced from:
_main in blas1C-63e43d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
bin ich nicht sicher, wo ich den Fehler mache, aber es gibt eine Reihe von Möglichkeiten:
- Ich brauche BLAS/cblas vom netlib website instal. Ich habe es tatsächlich versucht, aber ich konnte die Bibliothek aus dem Quellcode erstellen! es wäre toll, wenn jemand eine Homebrew-Formel machen könnte. Wenn dann die ursprüngliche CBLAS-Bibliothek installiert ist, muss ich etwas über die gcc-Flags zum Kompilieren und zum Verknüpfen der Bibliotheken erfahren.
- oder es gibt Syntaxunterschiede zwischen dem ursprünglichen CBLAS von Netlib und dem im xcode eingebauten und ich muss den Code ändern.
danke für Ihre Hilfe im Voraus.
P.S. Ich versuche, die Codes blas1C.c, blaio.c, blaio.h von der Seite, die ich erwähnte, zu kompilieren.
bearbeiten 1: oh mein! Ich habe gerade gemerkt, dass ich einen schrecklichen Fehler gemacht habe. Die fehlende printVector-Funktion ist nicht Teil von CBLAS, sondern eine Funktion, die vom Autor des Blogs erstellt wurde. das einzige, was ich tun musste, war nur die blaio.c-datei zu kompilieren. so die korrekte gcc-Befehl sollte
gcc blas1C.c blaio.c -lcblas
oder
gcc blac1C.c blaio.c -framework Accelerate
Ja, das ist richtig. Ich hatte meinen schrecklichen Fehler bereits herausgefunden. Danke für deine Antwort trotzdem. – Foad