Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9140546
  • 博文数量: 1725
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19840
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1725)

文章存档

2024年(1)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2015-08-29 09:34:51


点击(此处)折叠或打开

  1. 加上-Wl,–no-undefined
  2. 如果so里有未定义符号,这编译不通过

  3. gcc常用编译选项
  4.        -c 表示仅仅汇编及编译代码,不进行链接,也就是将源代码编译成 .o 文件

  5.        -o 指定输出文件的文件名

  6.        -g 调试信息生成,不跟数字默认为-g2,-g1是基本信息的加入,-g3连宏信息都附加进去,附加调试信息显著增加ELF文件大小,但不会影响生成代码的大小

  7.        -s 符号表删除

  8.        -w 关闭所有警

  9.        -D 定义宏,如:gcc –D_DEBUG = 1 -c xxx.c -o xxx

  10.        -E 只进行预处理,不汇编

  11.        -I 将指定路径添加到include的搜索路径

  12.        -S 只进行编译,不汇编

  13.        -O 优化选项,后面跟数字表示优化级别,-O0表示不优化,-O1、-O2、-O3优化程度依次递增

  14.        -Wall 打开所有的编译告警(实际上只打开大部分,部分要单独开启)

  15.        -Werror 将所有的编译告警转化为编译错误,只要有告警就停止编译

  16.        -include 在源文件前面含指定的头文件

  17.        -fstack-protector 堆栈保护,仅为局部变量中包含长度不小于8 byte的char数组的函数插入保护代码

  18.        -fstack-protector-all 为所有的(以下)局部变量插入保护代码:局部变量的地址作为赋值语句的右值或函数参数、局部变量包含数组类型的局部变量(不管数组长度)、带register声明的局部变量

  19.        -D_FORTIFY_SOURCE gcc编译器和glibc库配合,协同提供在编译时和运行时对固定大小的(动态分配和静态声明)缓冲区的访问检查,该选项能提供编译时和运行时的双重检查保护,建议和-O2一起使用:-D_FORTIFY_SOURCE=2 –O2

  20.        -Wformat 检查printf、scanf等函数调用,以确保提供的参数格式字符串合法有效,不合法则告警

  21.        -fPIC –fpic Position-independent Code 为共享库产生位置无关代码

  22.        -fPIE –fpie Position-independent Code为可执行文件提供产生位置无关代码

  23.        -Wl,-z,now 共享库或程序在加载完成后立即进行符号绑定,一般与-Wl,-z,relro一起使用(完全开启relro)

  24.        -Wl,-z,relro 全局偏移表GOT只读(部分开启relro)

  25.        -ftrapv 检测加、减、乘三种运算的运行时溢出,并在溢出时触发SIGABRT

  26.        -Wl,-z,noexecstack 告知编译器在生成目标文件时,将特定的内存区域(数据段以及堆栈段)标记为不可执行的,这个信息记录在ELF文件的GNU_STACK程序头,内核根据该信息来判定一个进程是否在堆栈及数据段可执行代码。

  27.        -Wextra 打印额外的一些告警信息



for jetsonTK1 EVK board:

点击(此处)折叠或打开

  1. arm-linux-gnueabihf-gcc

  2. -nostdinc


  3. -isystem /usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/include
  4. -I/home/tk1/linux/kernel/arch/arm/include -Iarch/arm/include/generated
  5. -include /home/tk1/linux/kernel/include/linux/kconfig.h


  6. -D__KERNEL__
  7. -mlittle-endian
  8. -Wall
  9. -Wundef
  10. -Wstrict-prototypes
  11. -Wno-trigraphs
  12. -fno-strict-aliasing
  13. -fno-common
  14. -Werror-implicit-function-declaration
  15. -Wno-format-security
  16. -fno-delete-null-pointer-checks
  17. -O2
  18. -fconserve-stack
  19. -fno-dwarf2-cfi-asm
  20. -fno-conserve-stack
  21. -mabi=aapcs-linux
  22. -mno-thumb-interwork
  23. -funwind-tables
  24. -marm
  25. -D__LINUX_ARM_ARCH__=7
  26. -march=armv7-a
  27. -msoft-float
  28. -Uarm
  29. -Wframe-larger-than=1024
  30. -fno-stack-protector
  31. -Wno-unused-but-set-variable
  32. -g
  33. -pg
  34. -fno-inline-functions-called-once
  35. -Wdeclaration-after-statement
  36. -Wno-pointer-sign
  37. -fno-strict-overflow
  38. -DCC_HAVE_ASM_GOTO
  39. -D"KBUILD_STR(s)=#s"
  40. -D"KBUILD_BASENAME=KBUILD_STR(fbcmap)"
  41. -D"KBUILD_MODNAME=KBUILD_STR(fb)"
  42. -c -o drivers/video/fbcmap.o drivers/video/fbcmap.c;


  43. if [ "-pg" = "-pg" ]; then
  44.     if [ drivers/video/fbcmap.o != "scripts/mod/empty.o" ]; then /home/tk1/linux/kernel/scripts/recordmcount "drivers/video/fbcmap.o";
  45.     fi;
  46. fi



阅读(2448) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~