一. 用户空间

因为实际上进行预处理的只是Gcc工具,而make工具只是一个解决依赖关系的工具。所以问题就简化成如何通过make向gcc传递参数。
     通过简单的例子来说明:
hello.c

  1. #include <stdio.h>
  2. void main(void) {
  3. #ifdef DEBUG
  4. printf("you ask for debug!\n");
  5. #endif
  6. printf("we must say goodbye\n");
  7. return;
  8. }

Makefile:

  1. ifeq ($(DEBUG),y)
  2. CFLAGS := $(CFLAGS) -DDEBUG
  3. endif
  4. hello: hello.c
  5. $(CC) $(CFLAGS) $< -o $@

执行过程:

  1. [ville@localhost test]$ ls
  2. hello.c Makefile
  3. [ville@localhost test]$ make
  4. cc hello.c -o hello
  5. [ville@localhost test]$ ./hello
  6. we must say goodbye
  7. [ville@localhost test]$ rm hello
  8. [ville@localhost test]$ ls
  9. hello.c Makefile
  10. [ville@localhost test]$ make DEBUG:=y
  11. cc -DDEBUG hello.c -o hello
  12. [ville@localhost test]$ ./hello
  13. you ask for debug!
  14. we must say goodbye
  15. [ville@localhost test]$

通过以上的简单例子说明如何通过宏开关进行条件编译。

linux 用户空间通过makefile向程序传递参数相关推荐

  1. 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键...

    [索引页] [源码下载] 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键, 程序常用配置参数 作者:webabcd ...

  2. java向应用程序传递参数_Java应用程序中的消息传递主体

    java向应用程序传递参数 消息传递是每个Java应用程序的关键方面,尤其是对于涉及企业应用程序集成(EAI)或关注点分离的应用程序,例如多层WEB应用程序. 消息传递可以分为两个主要类别,即同步和异 ...

  3. Linux 用户空间和内核空间指的是什么?

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间.两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

  4. linux 内核将两个设备相关联,linux用户空间和内核空间交换数据

    转载地址:http://www.poluoluo.com/server/201107/138420.html 在研究dahdi驱动的时候,见到了一些get_user,put_user的函数,不知道其来 ...

  5. Linux 用户空间和内核空间

    最近在微信群里看到有人提这个问题,然后查了下资料,觉得这篇文章是写得最能让人看懂的,分享给大家. 欢迎大家评论说出自己的见解,让更多的人更容易理解这部分知识. 之前的相关文章 Linux内存,先看这篇 ...

  6. Linux用户空间将虚拟地址转化为物理地址

    目录 引言 地址绑定 MMU(内存管理单元) 基本硬件 进程如何从磁盘映射到内存 磁盘和内存的映射过程 MMU方案 开始编码 创建我们的缓冲区 /proc/[pid]/pagemap 写 /dev/m ...

  7. Linux用户空间与内核空间(理解高端内存)

    目录 Linux内核地址映射模型 Linux内核地址空间划分 Linux内核高端内存的由来 Linux内核高端内存的理解 Linux内核高端内存的划分 常见问题 小结 1.虚拟内核空间到物理空间的映射 ...

  8. 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文

    文章目录 前言 用户空间与内核空间 内核态与用户态 进程上下文和中断上下文 上下文 原子 进程上下文 中断上下文 进程上下文VS中断上下文 原子上下文 前言 之前在学习嵌入式linux系统的时候,一直 ...

  9. Linux用户空间与内核空间

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

最新文章

  1. mysql 5000万条数据库_1亿条数据如何分表100张到Mysql数据库中(PHP)
  2. Virtex-6中的SelectIO模块
  3. 期末复习、化学反应工程科目(第八、九章)
  4. Pixhawk代码分析-姿态解算篇D
  5. java静态代码块的作用域_java基础之面向对象
  6. Windows下运行jekyll,编码已不再是问题
  7. [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)
  8. I - Arbitrage(判断是否有无正环 II)
  9. [mstsc]解决win8 win10 平板无法被mstsc连接的问题
  10. VS2010 asp.net development server 无法展示svg图片
  11. Cadence Orcad Capture绘制原理图常用基本操作
  12. python调用perl_python调用perl脚本
  13. 惠州VOCs实验室建设:日常废气处理工艺
  14. 不是有效的win32应用程序
  15. android9 coloros6版本,OPPO A9系统升级更新ColorOS 6 正式版-A.19固件完整包
  16. QGIS:让数据随时间动起来
  17. 中小型企业网络解决方案的设计和实施
  18. 会员金闪闪动画字体 (CATextLayer + CAGradientLayer)
  19. 传奇脚本显示服务器开区时间代码,GOM引擎活动页面脚本,传奇私服服务端添加开即时真假半兽人脚本...
  20. Yii2 User 登录原理

热门文章

  1. 一些前端开发经典书籍推荐和下载链接分享
  2. (function ( ){...})( ) IIFE 的原理
  3. Promise 的基本使用 与 Ajax的jQuery封装
  4. CQYZOJ P1392 拔河问题
  5. leetcode jump game ii
  6. windows phone 8 使用页面传对象的方式 实现页面间的多值传递
  7. ajax和Java session监听
  8. 三分钟带你掌握 CSS3 的新属性
  9. 异步加载js文件并执行js方法:实现异步处理网页的复杂效果
  10. mysql数据库存储过程及调用方法