测试clang是否支持linux内核模块编译

来源:互联网 发布:淘宝月老祠堂卖正品吗 编辑:程序博客网 时间:2024/06/05 07:46
gcc ~/projects/linux_firewall/lib/protos.c -D__KERNEL__ -c -I/lib/modules/2.6.32-33-generic/build/include/ -I/lib/modules/2.6.32-33-generic/build/arch/x86/include -include /lib/modules/2.6.32-33-generic/build/include/linux/autoconf.h
应该可以生成object
clang ~/projects/linux_firewall/lib/protos.c -D__KERNEL__ -c -I/lib/modules/2.6.32-33-generic/build/include/ -I/lib/modules/2.6.32-33-generic/build/arch/x86/include -include /lib/modules/2.6.32-33-generic/build/include/linux/autoconf.h
测试clang3.0提示编译错误:

/lib/modules/2.6.32-33-generic/build/arch/x86/include/asm/thread_info.h:178:24: error: 
      global register variables are not supported
register unsigned long current_stack_pointer asm("esp") __used;

参考clang手册:
http://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc
GCC extensions not implemented yet

clang does not support global register variables, this is unlikely to be implemented soon because it requires additional LLVM backend support.

期待clang的更新