Undefined symbols: "_dscal_" ... was bedeutet das?

C

CrusaderKing

Mitglied
Thread Starter
Dabei seit
18.05.2008
Beiträge
62
Reaktionspunkte
0
Hallo Leute,

ich versuche gerade einen Code unter Mac OSX 10.6 zu kompilieren, der unter Linux entwickelt wurde und dort auch problemlos kompiliert. Alles funktioniert fehlerfrei, bis ganz zum Schluss der folgende Error kommt:

...
Undefined symbols:
"_dscal_", referenced from:
...
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [gen_lock] Error 1

Was bedeutet das? Ich habe absolut keine Ahnung und auch Google hat nichts ausgespuckt. Kann mir jemand helfen und mir sagen, wie ich dieses Problem lösen kann? Gibt es irgendetwas, das ich installieren/einbinden kann, so dass er dieses "_dscal_" findet?

Vielen Dank schonmal für jeden Rat!!

Viele Grüße,
Crusader
 
Offenbar fehlt da eine Library oder ein Header-File, das vielleicht bei Linux zum OS gehört und bei Mac nicht.
Wenn Du uns nicht verrätst, was Du das compilieren willst, sieht es mit Tips ziemlich mies aus.
 
  • Gefällt mir
Reaktionen: below
Das ist eigentlich keine Unix Frage.
Passt eher nach "Entwickler / Programmierer"
 
Hallo!

Ich musste mich leider neu anmelden, weil aus irgendeinem Grund mein alter Account nicht mehr akzeptiert wurde... komisch.

Also das oben beschriebene Problem tritt bei einem eigenen, kleinen Programm auf, das in der Programmumgebung DUNE (http://www.dune-project.org/) geschrieben wurde. Insbesondere beim Einbinden des Dune-Moduls 'dune-fem'. Was mich verwundert ist, dass das Tool selbst problemlos kompiliert, aber beim Einbinden bestimmter Header aus der DUNE-Bibliothek den oben beschriebenen Fehler ausspuckt... Ich weiß nicht, in wie weit das hilfreich ist. Gibt es denn irgendeine Möglichkeit herauszufinden wo und wie normalerweise "_dscal_" definiert wird?

Grüße
(New) Crusader :)
 
Da das Compilieren der Object-Files durchläuft (Eine andere, frühere Fehlermeldung gibt es nicht?), scheint eine Bibliotheksdatei zu fehlen. _dscal_ verweist mich bei Google nur auf DSCAL aus der NetLib. Ob es das ist, weiß ich nicht. (http://www.netlib.org/blas/dscal.f) In welcher Sprache wurde das programmiert?
 
Das wurde alles in C++ geschrieben. Ich kann ja mal versuchen die netlib einzubinden und dann schauen was passiert. Danke sehr für diesen Hinweis!
 
Leider hat das nichts genützt. Was mich jetzt aber sehr verwirrt: ich habe eben meinen ganzen Mac nach der Codezeile _dscal_ durchsucht... nichts! Wie kann das sein? Irgendwo muss er das doch her nehmen???
 
also du wirfst kaum sunperf.h, mathkeisan BLAS oder LinAI auf deinem mac haben...
diese module scheinen also auf solaris oder NEC bzw mit LinAI geschrieben worden zu sein...
 
Also BLAS sollte ja standardmäßig vorinstalliert und in der vecLib und dem Accelerate framework enthalten sein. sunperf.h sagt mir nichts. Woher weißt du, dass das gebraucht wird?
 
Leider hat das nichts genützt. Was mich jetzt aber sehr verwirrt: ich habe eben meinen ganzen Mac nach der Codezeile _dscal_ durchsucht... nichts! Wie kann das sein? Irgendwo muss er das doch her nehmen???

Symbole werden beim Compilieren immer in "_" eingekleidet. Du wirst den String also nirgends finden. Ich gehe aber auch davon aus, dass dein Programm sich unter MacOS nicht übersetzen läßt. Unix ist nunmal nicht gleich Unix...
 
/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/A/Headers/cblas.h
allerdings heißt die es da
void cblas_dscal(const int N, const double alpha, double *X, const int incX);

müsste du also die funktion umbenennen, entweder in der source oder im binary.
 
Hi.

Erstmal vielen Dank für die Antworten!
@_ebm_ Das macht die Sache klarer. Ohne "_" findet er jetzt Treffer ohne Ende.
@ oneOeight: meinst du damit, dass ich einfach überall in meiner DUNE-source dscal in cblas_dscal umbennen soll? Würde das reichen?
 
Es klappt jetzt!!! Endlich. :) Vielen Dank für die Hilfe!!!
 
Zurück
Oben Unten