configure相关笔记整理

原创 2016年05月30日 21:09:05

上半年时做了一个将Linux移植到Windows的项目,由于对configure&make这个过程不太熟悉,所以还是出了很多问题的。

现在简单整理当时的笔记。

Q1:

#ifdef x
...
#else
...
#endif 

这些东西是干什么的?

A1:一些程序在设计时,希望能对环境进行一些适应从而编译出不同的软件,比如在不同的操作系统下都能编译。我们可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。比如 

#ifdef OS_WINDOWS

os.name = "windows";

#else

os.name = "other"

#endif


Q2:这些条件编译使用的变量怎么来的?为什么在config.h(类似)里看到了这些值?

A2:既然是为适应环境而产生的条件编译,那这些变量当然不能是写死的,一般来说Linux下的configure过程会分析这些变量该取哪些值的过程,然后会将这值写进一个头文件里,并让其他文件包含(config.h),生成Makefile文件

某工程的config.h如下

/* config.h.  Generated from config.h.in by configure.  */
/* config.h.in.  Generated from configure.ac by autoheader.  */

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the `dnet' library (-ldnet). */
#define HAVE_LIBDNET 1

/* Define to 1 if you have the `dumbnet' library (-ldumbnet). */
/* #undef HAVE_LIBDUMBNET */

/* Define to 1 if you have the `pcap' library (-lpcap). */
/* #undef HAVE_LIBPCAP */

/* Define to 1 if you have the `pthread' library (-lpthread). */
/* #undef HAVE_LIBPTHREAD */

/* Define to 1 if you have the `wpcap' library (-lwpcap). */
#define HAVE_LIBWPCAP 1

/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
#define HAVE_LIBWS2_32 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Defined when the system UNIX based */
/* #undef OS_UNIX */

/* Defined when the system is Windows based */
#define OS_WINDOWS 

/* Name of package */

Q3::configure时提示 can not guess build type怎么办?

A3:这时就是configure脚本无法判断当前的一些信息,比如操作系统,这时需要我们去指定,比如

--target=GARGET

除此之外,这个问题的产生是由于config.guess脚本无法guess产生的,一般都是因为config.guess比较老导致的,我们更新脚本即可。

地址:http://git.savannah.gnu.org/gitweb/?p=config.git

替换config.guess
重新configure
OK

excel笔记整理

1、excel:由微软公司生产的办公软件之一,电子制表软件,工作簿,可以用来做表格、进行数据处理等 2、打开方式: 方式一: 开始->所有程序->Microsoft office->Mi...
  • yangzai521
  • yangzai521
  • 2016年12月07日 20:51
  • 335

Go语言学习资料整理

整理网上找到的Golang语言学习资料 基础 基础教程 书籍在线版 Go 指南-A Tour of Go Go语言圣经(中文版) Effective Go中文版 G...
  • xumaojun
  • xumaojun
  • 2017年11月28日 09:43
  • 153

【好程序员笔记分享】——java中关于异常的知识点

android培训------我的java笔记,期待与您交流! 关于java中异常的知识点也学习了好久了,今天依旧把前段时间学习的异常的知识点整理一下. 好了,开始上笔记: 一:java中异常是...
  • u012960536
  • u012960536
  • 2015年05月11日 22:44
  • 397

整理牛人看文献的方法

总结一[1]          (从phd到现在工作半年,发了12篇paper,7篇firstauthor.)          我现在每天还保持读至少2-3篇的文献的习惯。读文献有不同的读法。但最...
  • zjxiaolu
  • zjxiaolu
  • 2015年05月06日 01:56
  • 2337

Camera 2相关资料整理

因为项目要用到Camera 2,然而网上Camera 2的资源实在是太少,除了谷歌官方文档,github上的官方给的以及其他人写的用Camera 2开发的相机代码,还有就是ytube上有Camera ...
  • u012324875
  • u012324875
  • 2017年04月14日 09:38
  • 293

【学习笔记】大数据处理题目笔记整理

持续更新中……
  • ChenxiCBLOG
  • ChenxiCBLOG
  • 2015年05月15日 20:42
  • 664

live555学习笔记-几个重要对象的生命期

几个重要对象的生命期 live555中很多类,类与类之间的关系复杂,从属关系不明显,层次上看起来也有些乱.所以源代码读起来比较困难,对于一些对象生命的来龙去脉也很难厘清. 但这并不能说明live5...
  • Runningzyx
  • Runningzyx
  • 2016年09月19日 11:16
  • 299

JAVA学习笔记整理一(基础知识)

初期学习笔记
  • Friday_577
  • Friday_577
  • 2016年05月16日 21:58
  • 306

Linux内核【链表】整理笔记(2)

关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型。至于链表的遍历,内核也有一...
  • wjlkoorey
  • wjlkoorey
  • 2016年07月24日 11:00
  • 583

舌尖上的中国第一季整理笔记

自然的馈赠 云南香格里拉----松茸 浙江遂昌----竹笋、冬笋 柳州----大头田笋 云南大理----诺邓盐、诺邓火腿 湖北嘉鱼----莲藕、冬天吃藕汤、藕汤煨排骨 吉林查干湖----冬捕鱼 广西...
  • huwei0518
  • huwei0518
  • 2015年02月06日 13:51
  • 658
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:configure相关笔记整理
举报原因:
原因补充:

(最多只允许输入30个字)