web-dev-qa-db-fra.com

Ubuntu 16.04, gcc 4.9, CUDA 7.5.18, inclut les en-têtes gcc5

Je suis sous Ubuntu 16.04 où j'ai installé les pilotes gcc4.9 et NVIDA à partir de référentiels officiels, configuré des alternatives pour gcc et installé le toolkit CUDA 7.5.18.

Lorsque j'essaie de compiler un code CUDA, je reçois beaucoup de messages comme celui-ci.

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx2intrin.h(247): error: ...

Comment puis-je forcer le système à utiliser les en-têtes gcc-4.9 et non pas gcc-5?

J'utilise cmake et make pour compiler le code source.

Je vous remercie

3
user3498274

Vous voudrez ajouter un indicateur -I dir à vos indicateurs CXX dans le fichier make et probablement au fichier cmake. Le répertoire serait le chemin d'accès aux en-têtes que vous souhaitez utiliser. Si l'inclusion des répertoires appropriés ne fonctionne pas, il serait préférable de désactiver également les chemins d'inclusion par défaut avec --nostdinc, mais cela ne devrait pas être nécessaire car il effectue une recherche préalable dans les répertoires d'inclusion. Pour ajouter ces drapeaux aux fichiers cmake, vous devez spécifier quelque chose le long des lignes

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/local/include -L/usr/local/lib")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")

de ne réponse sur la configuration des drapeaux cmake . (L'indicateur -L sert à spécifier les bibliothèques qui ne sont recherchées que dans le style "" et non dans le style <>)

1
Josh Kergan