免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10567 | 回复: 6
打印 上一主题 下一主题

发现很多Makefile里都有这个选项“-DHAVE_CONFIG_H” [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-03 17:20 |只看该作者 |倒序浏览
发现很多Makefile里都有这个选项“-DHAVE_CONFIG_H”,这是什么意思,作用是什么?

论坛徽章:
0
2 [报告]
发表于 2009-03-03 17:22 |只看该作者

回复 #1 reer 的帖子

通常./configure之后都会有一个config.h,这个文件常常存放编译系统环境有关的一些常熟,估计这个HAVE_CONFIG_H就是说有config.h这个文件吧。

论坛徽章:
0
3 [报告]
发表于 2009-03-03 17:44 |只看该作者
-D 选项表示定义一个宏

在源文件里这样的引入方式 就会把这个文件包含进来 如果不加选项“-DHAVE_CONFIG_H”则源文件不引入头文件config.h

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

论坛徽章:
0
4 [报告]
发表于 2009-03-03 17:45 |只看该作者
LZ可以man gcc查看gcc选项就知道其具体格式与含义了

[ 本帖最后由 lenky0401 于 2009-3-3 17:51 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-03-03 19:46 |只看该作者
Thanks!

论坛徽章:
0
6 [报告]
发表于 2009-03-03 20:02 |只看该作者
一般Makefie里的 -DHAVE_CONFIG_H是作为CFLAGS参数传给gcc的。

  1.        gcc [-c|-S|-E] [-std=standard]
  2.            [-Dmacro[=defn]...] [-Umacro]
复制代码


查man手册知,就是通过 gcc -DHAVE_CONFIG , 定义了 HAVE_CONFIG_H 这个宏。
随手找了个bash的源码,截一段: ./lib/tilde/tilde.c bash源码中的源文件~~

  1. #if defined (HAVE_CONFIG_H)
  2. #  include <config.h>
  3. #endif
复制代码


而这里的config.h文件,是通过configure生成的,里面关于编译环境的一些宏。
通过configure检查出来的这些宏,在做跨平台时使用非常方便。

论坛徽章:
0
7 [报告]
发表于 2009-03-04 09:25 |只看该作者
本帖最后由 reer 于 2011-01-20 10:41 编辑

谢谢samon_fu !!!你彻底解答了我的问题

也谢谢lenky0401 !你让我知道了解决问题的好方法


2011-1-20增加:
也谢谢 xiexiecn啊

呵呵,当时没明白你的意思,现在明白了,发现你其实说得也很清楚了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP