注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

(转载)gcc -D选项  

2016-08-09 19:36:10|  分类: LINUX编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

gcc -D选项 

http://blog.chinaunix.net/uid-28458801-id-4512377.html

一、概念 

   gcc-D选项可以定义宏,这是什么意思呢?

    C语言源程序中有#define定义的宏,可以起到替换、条件编译的功能;定义宏的方式是放在头文件或者C文件中。gcc提供了另外一种宏定义的方法,当然可以想象这样的宏定义方法并不是很好用,但毕竟编译器给我们提供了额外的宏定义的方法。假设程序需要很多宏,不可能这些宏都在编译器中定义,可以说比较重要的宏才会放在gccD选项后边。

-Dname 定义宏name,默认定义内容为字符串“1” 

-Dname=defn 定义宏name,并且内容为defn

  二、实验

测试程序:

#include  int main()

{

    #ifdef HELLO

    printf("HELLO defined !\n");

    printf("HELLO = %d\n",HELLO); #else printf("HELLO not define!\n"); #endif return 0;

}

1.执行编译命令:

#gcc main.c -o main

 main的执行结果 :

HELLO not define!

2.执行编译命令:(条件编译测试)

#gcc -DHELLO main.c -o main

 main的执行结果 :

HELLO defined!

HELLO = 1

3.执行编译命令:(宏替换测试)

#gcc -DHELLO=36 main.c -o main

 main的执行结果 :

HELLO defined!

HELLO = 36

三、u-boot上的应用

u-boot编译cpu/start.S的过程如下框中内容所示,红色部分就是gcc-D选项应用

arm-linux-gcc  -D__ASSEMBLY__ -g  -Os   -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float -malignment-traps -D__KERNEL__ -DTEXT_BASE=0x33F80000  -I/share/u-boot-1.1.6/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/EmbedSky/crosstools_3.4.5_softfloat/bin/../lib/gcc/arm-linux/3.4.5/include -pipe  -DCONFIG_ARM -D__ARM__ -march=armv4 -mapcs-32 -c -o start.o start.S

 

  评论这张
 
阅读(89)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017