Übung 11 Probleme beim kompilieren

der_apfel
Erstie
Erstie
Beiträge: 14
Registriert: 9. Apr 2010 22:47

Übung 11 Probleme beim kompilieren

Beitrag von der_apfel »

Ich wollte das gegebene Code Beispiel bei mir lokal auf dem Rechner kompilieren und habe nun Probleme mit den Anweisungen.

Bisher habe ich nur die Datei CMakeLists.txt angepasst, damit sie auf das richtige Include Verzeichnis verweist.
INCLUDE_DIRECTORIES("/opt/AMDAPP/include")

Wenn ich nun ein build Verzeichnis erstelle und dort "cmake .." und "make" eingebe, dann gibt er mir Fehlermeldungen im Stile von

Code: Alles auswählen

uebung11.cpp:36: undefined reference to `clCreateBuffer'
Es wird also daran liegen, das die OpenCL Libraries bei make nicht richtig (rechtzeitig) dazu gelinkt werden.

Zu meiner Überraschung funktioniert aber das manuelle kompilieren mit dem Befehl "g++ -I/opt/AMDAPP/include "uebung11.cpp" "openclhelperfunctions.cpp" -lOpenCL -o Uebung11" einwandfrei.

Kann mir jemand einen Tipp geben, wie ich das Beispiel lokal mit Hilfe von cmake und make zum laufen kriege?

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Übung 11 Probleme beim kompilieren

Beitrag von Thomas Huxhorn »

Aus
http://www.cs.swarthmore.edu/~adanner/tips/cmake.php
hab ich mir das

Code: Alles auswählen

target_link_libraries(${program} OpenCL})
herausgelesen.
Probier mal ob das funktionieren könnte.

der_apfel
Erstie
Erstie
Beiträge: 14
Registriert: 9. Apr 2010 22:47

Re: Übung 11 Probleme beim kompilieren

Beitrag von der_apfel »

Also bei mir auf dem Laptop macht es keinen Unterschied ob ich target_link_libraries(${program} OpenCL}) in die CMakeList.txt reinschreibe.
Es funktioniert immer noch nicht.

Um ehrlich zu sein habe ich die Reihenfolge beim linken im Verdacht.

Auf den gris Rechner funktionieren die beiden Befehle

Code: Alles auswählen

g++ -I/usr/local/cuda_sdk/OpenCL/common/inc -lOpenCL "uebung11.cpp" "openclhelperfunctions.cpp" -o Uebung11
g++ -I/usr/local/cuda_sdk/OpenCL/common/inc "uebung11.cpp" "openclhelperfunctions.cpp" -lOpenCL -o Uebung11
Während es bei meinem Laptop die Reihenfolge einen Unterschied macht.
Der Befehl funktioniert

Code: Alles auswählen

g++ -I/opt/AMDAPP/include "uebung11.cpp" "openclhelperfunctions.cpp" -lOpenCL -o Uebung11
Dieser hier gibt mir genau die Fehlermeldungen aus, die beim kompilieren mit make entstehen

Code: Alles auswählen

g++ -I/opt/AMDAPP/include -lOpenCL "uebung11.cpp" "openclhelperfunctions.cpp" -o Uebung11

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Übung 11 Probleme beim kompilieren

Beitrag von Thomas Huxhorn »

Ja, ewiges Problem mit der Reihenfolge. Hier wirds erklärt warum: http://stackoverflow.com/questions/2738 ... -the-binut

der_apfel
Erstie
Erstie
Beiträge: 14
Registriert: 9. Apr 2010 22:47

Re: Übung 11 Probleme beim kompilieren

Beitrag von der_apfel »

Danke für Link!

Ich versteh aber trotzdem nicht, warum die Reihenfolge auf gris Maschinen keinen Unterschied macht. :oops:

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Übung 11 Probleme beim kompilieren

Beitrag von Thomas Huxhorn »

Tja, vllt. ist der g++ anderst eingestellt. Da gibt es eine Option, so dass er immer wieder die libs nach Symbolen durchsucht. Weiß nicht mehr wie die heißt. Aber vllt. ist sie dort auch ohne Compilerflag aktiviert. Ist aber nur eine schwache Vermutung.

Antworten

Zurück zu „Archiv“