CUDA und Ubuntu 8.10: __builtin_va_arg_pack is undefined und andere Errors

Da ich mir nun bald das CUDA-Framework näher anschauen werde, hier ein paar Tipps um das SDK mit den Codebeispielen compiliert zu bekommen:

Um generell unter Ubuntu kompilieren zu können, sollte das Paket build-essential installiert sein. Nach der Installation der Ubuntu-Nvidia-Grafiktreiber (sind bereits aktuell) und des CUDA-Toolkits und SDK’s von der CUDA-Seite, gab es bei mir ein paar Probleme beim kompilieren der SDK-Beispiele:

1.

In file included from ./../common/inc/paramgl.h:13,
from src/paramgl.cpp:8:
./../common/inc/GL/glut.h:59:19: error: GL/gl.h: No such file or directory
./../common/inc/GL/glut.h:60:20: error: GL/glu.h: No such file or directory
In file included from ./../common/inc/paramgl.h:13,
from src/paramgl.cpp:8:
./../common/inc/GL/glut.h:433: warning: ‘glutUseLayer’ initialized and declared ‘extern’
./../common/inc/GL/glut.h:433: error: variable or field ‘glutUseLayer’ declared void
./../common/inc/GL/glut.h:433: error: ‘GLenum’ was not declared in this scope
./../common/inc/GL/glut.h:491: error: ‘GLfloat’ has not been declared
./../common/inc/GL/glut.h:491: error: ‘GLfloat’ has not been declared
./../common/inc/GL/glut.h:491: error: ‘GLfloat’ has not been declared
./../common/inc/GL/glut.h:492: error: ‘GLfloat’ does not name a type
./../common/inc/GL/glut.h:496: warning: ‘glutGet’ initialized and declared ‘extern’

Das Problem wird gelöst, in dem die Opengl-devel Pakete installiert werden: apt-get install libglut3-dev

2.

make[1]: Entering directory `/home/ich/NVIDIA_CUDA_SDK/projects/dxtc’
/usr/include/bits/stdio2.h(35): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(66): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(99): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(105): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(159): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(167): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(174): error: identifier “__builtin_va_arg_pack” is undefined
/usr/include/bits/stdio2.h(182): error: identifier “__builtin_va_arg_pack” is undefined

Diese Fehler hängen damit zusammen das Ubuntu 8.10 nicht offiziel unterstützt wird, bzw. genauer gesagt die gcc-version Probleme bereitet.

Ein Workaround der bei mir funktionierte:


sudo apt-get install gcc-4.2 g++-4.2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.2 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.2

3. /usr/bin/ld: cannot find -lXmu

Lösung: xmu muss installiert werden


sudo apt-get install libxmu-dev libxmu6

4.

make[1]: Entering directory `/home/ich/NVIDIA_CUDA_SDK/projects/simpleTextureDrv’
In file included from /usr/include/features.h:354,
from /usr/cuda/bin/../include/host_config.h:53,
from /usr/cuda/bin/../include/cuda_runtime.h:45,
from :0:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make[1]: *** [data/simpleTexture_kernel.cubin] Error 255
make[1]: Leaving directory `/home/ich/NVIDIA_CUDA_SDK/projects/simpleTextureDrv’
make: *** [projects/simpleTextureDrv/Makefile.ph_build] Error 2

Die Glibc-Pakete für 32-bit Anwendungen unter 64-bit fehlen (Der Fehler betrifft nur 64bit-Installationen)

sudo apt-get install libc6-dev-i386 libc6-i386





Nach diesen Korrekturen kompilierten alle Beispiele durch und die die ich bisher probierte starteten auch ohne Probleme auf meiner Geforce 260. Das Mandelbrot-Beispiel ließ meinen ganzen PC abstürzen und die Grafikkarte nur noch Fiebgeräusche von sich geben (!), hier vermute ich Compiz als übeltäter, den man wohl besser bei Cuda-Experimenten abschaltet.

Leave a Reply