2012-03-22 3 views
4

J'ai essayé de gcc à dump the include paths et mon dossier .clang_complete ressemble maintenant à:Comment configurer clang_complete pour le développement du module noyau Linux?

-std=gnu89 
-nostdinc 
-I/usr/src/linux-headers-3.0.0-16-generic/arch/x86/include 
-I/lib/modules/3.0.0-16-generic/build/arch/x86/include/generated 
-I/lib/modules/3.0.0-16-generic/build/include 
-I/lib/modules/3.0.0-16-generic/build/ubuntu/include 
-I/usr/lib/gcc/i686-linux-gnu/4.6.1/include 
-D__KERNEL__ 
-DMODULE 

Mais libclang se plaint encore des tonnes d'erreurs & avertissements lors de l'édition d'un module de noyau simple Bonjour tout le monde.

1 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 warning| declaration of 'struct list_head' will not be visible outside of this function 
2 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|26 col 6 error| incomplete definition of type 'struct list_head' 
3 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 info| forward declaration of 'struct list_head' 
4 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|27 col 6 error| incomplete definition of type 'struct list_head' 
5 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 info| forward declaration of 'struct list_head' 
6 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|37 col 38 warning| declaration of 'struct list_head' will not be visible outside of this function 
... 

la définition de struct list_head de <linux/types.h> est déjà inclus par <linux/list.h>. Les deux sont à l'intérieur /lib/modules/3.0.0-16-generic/build/include

Répondre

4

Le fichier cc_args.py fourni avec clang_complete aurait pu vous être utile. Il devrait générer un fichier .clang_complete valide. Malheureusement (je viens de le tester, et je vais essayer de le réparer), ça ne marche pas ici (le fichier .clang_complete n'a pas pu être créé).

Cependant, en modifiant légèrement le script et son résultat, que je suis en mesure de produire un fichier .clang_complete valide:

-D__KERNEL__ 
-DCONFIG_AS_CFI=1 
-DCONFIG_AS_CFI_SIGNAL_FRAME=1 
-DCONFIG_AS_CFI_SECTIONS=1 
-DCONFIG_AS_FXSAVEQ=1 
-nostdinc 
-I/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.3/include 
-I/usr/src/linux-3.2.12-1-ARCH/arch/x86/include 
-I/usr/src/linux-3.2.12-1-ARCH/arch/x86/include/generated 
-I/usr/src/linux-3.2.12-1-ARCH/include 
-DMODULE 
-DKBUILD_STR(s)=#s 
-include /usr/src/linux-3.2.12-1-ARCH/include/linux/kconfig.h 

Avec cette .clang_complete, il n'y a qu'une seule erreur à gauche, liée à __kfree_rcu, Pour plus d'informations à ce sujet, voir: https://lkml.org/lkml/2012/1/12/2

Questions connexes