写驱动程序,编译驱动模块时,出现

“make[1]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64'

/usr /src/linux-headers-2.6.32-5-common/arch/x86 /Makefile:81: stack protector enabled but no compiler support” - stack protector 启用,但编译器不支持

解决方法1: (除去栈保护支持)

1. 修改 /usr/src/linux-header-xxx/目录下的文件.config,找到CONFIG_CC_STACKPROTECTOR,注释掉

2. 同样的办法修改/usr/src/linux-header-xxx/include/config/auto.conf

解决方法2: (保留栈保护功能)

在/usr/src/linux-headers-2.6.32-5-common/arch/x86/Makefile中有

  1. ifdef CONFIG_CC_STACKPROTECTOR
  2. cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
  3. ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y)
  4. stackp-y := -fstack-protector
  5. KBUILD_CFLAGS += $(stackp-y)
  6. else
  7. $(warning stack protector enabled but no compiler support)
  8. endif
  9. endif

判 断编译器是否支持stack-protector的是/usr/src/linux-headers-2.6.32-5-common/scripts /gcc-x86_$(BITS)-has-stack-protector.sh文件(针对32/64位机器,有不同的文件)

点击(此处)折叠或打开

  1. #!/bin/sh
  2. echo "" | $* -S -xc -c -O0 -fstack-protector - -o - 2> /dev/null | grep -q "%gs"
  3. if [ "$?" -eq "0" ] ; then
  4. echo y
  5. else
  6. echo n
  7. fi

这个文件中判断gcc是否支持fstack-protector的方法是,查看""生成的支持栈保护的汇编码中是否含有"%gs"。大家可以通过实验来观察区别,而这个文件中的判断与实际的相反。故将这两个文件中的y和n互换位置即可。

实验:  Debian6.0.5/Linux 2.6.32-5-amd64/gcc 4.4.5

源代码: (test_stack_protector.c)

int foo(void) { char X[200]; return 3; }

编译结果:

(1)  gcc -S -fstack-protector -o stack test_stack_protector.c

stack:

------------------------------------------------------------

  1. .file"test_stack_protector.c"
  2. .text
  3. .globl foo
  4. .typefoo, @function
  5. foo:
  6. pushl %ebp
  7. movl %esp, %ebp
  8. subl $216, %esp
  9. movl %gs:20, %eax
  10. movl %eax, -12(%ebp)
  11. xorl %eax, %eax
  12. movl $3, %eax
  13. movl -12(%ebp), %edx
  14. xorl %gs:20, %edx
  15. je .L3
  16. call __stack_chk_fail
  17. .L3:
  18. leave
  19. ret
  20. .sizefoo, .-foo
  21. .ident"GCC: (Debian 4.4.5-8) 4.4.5"
  22. .section.note.GNU-stack,"",@progbits

(2)   gcc -S -fno-stack-protector -o nostack test_stack_protector.c

nostack:

------------------------------------------------------------

  1. .file"test_stack_protector.c"
  2. .text
  3. .globl foo
  4. .typefoo, @function
  5. foo:
  6. pushl %ebp
  7. movl %esp, %ebp
  8. subl $208, %esp
  9. movl $3, %eax
  10. leave
  11. ret
  12. .sizefoo, .-foo
  13. .ident"GCC: (Debian 4.4.5-8) 4.4.5"
  14. .section.note.GNU-stack,"",@progbits

转载于:https://www.cnblogs.com/oracleloyal/p/5311516.html

编译驱动模块时,出现“stack protector enabled but no compiler support”[解决办法]相关推荐

  1. 安装kilo版本openstack-dashboard时出现的python compress command not found错误解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 安装openstack-dashboard时出现的python compress command not found错误解决办 ...

  2. Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法

    Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法 KEIL AC5到AC6需要注意的地方 从AC5移植到AC6 解决流程 关键步骤 最近同事咨询改用keil的最新版本编译器编译原来的 ...

  3. android启动画面白屏,Android app启动时黑屏或者白屏的原因及解决办法

    1.产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景. 示例: 2.解决办法 通过设置设置Style (1)设置背 ...

  4. 下载logisim时显示“系统找不到指定路径”的解决办法!!!!

    下载logisim时显示"系统找不到指定路径"的解决办法!!!! 最后全部搞完的时候百度到了这个: 因为我的电脑之前胡乱删了一些东西而且Java没卸载,总之就很乱,但是我没卸载干净 ...

  5. docx转doc时,防止公式被转成图片的解决办法

    [转载]docx转doc时,防止公式被转成图片的解决办法 编辑社回复需要doc(Word 97-2003)格式的文档,可是将docx(Word 2007+)另存为doc格式时,发现公式被转成了图片.其 ...

  6. 安装TIA博途V14 SP1后,打开软件时系统提示出现一个并行的错误_解决办法

    安装TIA博途V14 SP1后,打开软件时系统提示出现一个并行的错误_解决办法 如下图所示,已经将 TIA Portal 从 V14 升级到 V14 SP1.成功完成升级而没有任何错误后,再次打开 T ...

  7. Outlook启动时提示“找不到文件Outlook.pst文件”解决办法

    Outlook启动时提示"找不到文件Outlook.pst文件"解决办法: 解决方法: 1.   开始 –> 运行  –> cmd 2.   在DOS下,用CD 切换到 ...

  8. PyCharm激活时遇到This license K71U8DBPNE has been cancelled的解决办法

    PyCharm激活时遇到This license K71U8DBPNE has been cancelled的解决办法 PyCharm在激活之前如果没有修改hosts文件,则在注册激活码时会弹出如下窗 ...

  9. Qt删除文件夹时父文件夹一并删除的原因与解决办法

    Qt删除文件夹及子文件夹全部文件时父文件夹一并删除的原因与解决办法 初学Qt文件操作,总会先去查阅各种资料,参考各种代码然后一点点地去调试. 我在编写"删除文件夹及子目录与所有文件" ...

最新文章

  1. linux c 内核 ISO C90 forbids mixed declarations and code 警告
  2. j详细说明ava于clone办法
  3. 机器学习应用方向(三)~可解释机器学习Explainable ML/Explainable AI
  4. python messagebox一定要指定父窗体吗,为什么要使用的MessageBox.show一个所有者窗口?...
  5. iOS Apps核心对象
  6. Vue项目开发目录结构和引用调用关系
  7. PMP项目管理认证体系
  8. WeixinJSBridge API使用实例
  9. ajax 详解(GET,POST方式传输以其封装)
  10. 阅读underscore源码笔记
  11. Android ActivityManager类
  12. office之转置EXCEL表格
  13. 成功之路散文连载之笨人论
  14. HTML5作品展示摄影网站网页模板源码下载
  15. 用天文方法计算二十四节气
  16. UVALIVE 2678
  17. Exploratory Social Network Analysis with Pajek(第三版)2-1
  18. 疲惫的 618,很难再激起年轻人的多巴胺?
  19. pandas 数据聚合与分组运算
  20. 制作视频弹幕:DanmakuFlameMaster

热门文章

  1. 算法基础:熄灯问题的思考
  2. 搞定Java基础:反射机制
  3. 火星财经“POW'ER 2019全球开发者大会”在京成功举办,中国版“Consensus大会”呼之欲出
  4. 搭建 NPM 私有服务搭建入坑记
  5. 最好的接单合作伙伴,最给力的众包开发商。
  6. FTP用户名密码暴力破解
  7. 苹果开始准备生产 iPhone 5S 了
  8. JAVA程序设计:IPO(LeetCode:502)
  9. 《一笔流书》草书字体视觉再设计—以张旭《李清莲序》为例
  10. 猿创征文|深度学习基于前馈神经网络完成鸢尾花分类