2010-09-08 11 views
4

J'ai un problème avec le framework OpenCl/Cuda de Nvidia, mais je pense qu'il s'agit d'un problème de liaison gcc.Fichiers d'en-tête liés à un fichier d'en-tête non trouvé.

Le fichier exemple suivant utilise opencl_hello_world.c fichier d'en-tête:

#include "../OpenCL/common/inc/CL/opencl.h" 

avec opencl.h en utilisant ces fichiers d'en-tête:

#include <../OpenCL/common/inc/CL/cl.h> 
#include <../OpenCL/common/inc/CL/cl_gl.h> 
#include <../OpenCL/common/inc/CL/cl_gl_ext.h> 
#include <../OpenCL/common/inc/CL/cl_ext.h> 

donc tous les fichiers d'en-tête sont dans le même dossier.

Quand je compile puis avec gcc opencl_hello_world.c -std=c99 -lOpenCL je reçois des messages d'erreur suivant:

error: ../OpenCL/common/inc/CL/cl.h: No such file or directory 
error: ../OpenCL/common/inc/CL/cl_gl.h: No such file or directory 
... 

Même si cl.h et les autres fichiers d'en-tête se trouvent dans ce dossier.

Après avoir cherché, je puis changé le comprend dans le opencl.h à

#include "cl.h" 
    #include "cl_gl.h" 

comment j'ai lu ici: gcc Can't Find a Included Header. Mais déconner avec les fichiers d'en-tête des frameworks ne semble pas être le bon choix? Quelle serait la bonne façon de gérer ce problème?

Répondre

6

Vous utilisez à la fois le format #include "" et le code #include <>, qui ne recherchent pas les mêmes chemins. "" est local pour votre projet, et la ligne de commande -i spécifiée à gcc, <> est le chemin 'system' spécifié par -I à gcc.

Vous devez probablement définir le chemin d'inclusion avec -Ipath/to/includes dans la ligne de commande de gcc.

+1

donc j'ajoute '-I ../ OpenCL/common/inc/CL /' mais j'obtiens toujours l'erreur: '.../OpenCL/commun/inc/CL/cl.h: Aucun fichier ou répertoire de ce type ' – Framester

+0

Étant donné que le chemin est déjà dans #include <>, vous devez passer à -I le chemin BEFORE ../OpenCL/etc, pas après. – jv42

+0

Salut jv42, merci pour le tipp: J'ai essayé 'gcc opencl_hello_world.c -I/home/mon compte utilisateur/Documents/projets/opencl/NVIDIA_GPU_Computing_SDK -L/usr/local/cuda/lib -lOpenCL', mais l'erreur est toujours : '../OpenCL/common/inc/CL/cl.h: Aucun fichier ou répertoire'. Je pense, j'ai oublié quelque chose de stupide. – Framester