Linux Makefile自动生成--config.h
来源:互联网 发布:瑞典监狱 知乎 编辑:程序博客网 时间:2024/05/29 08:32
Linux Makefile自动生成--总体流程
Linux Makefile自动生成--实例
Linux Makefile自动生成--config.h
config.h主要用于代码移植,产生可移植代码。
有些函数只适用于特定的系统,并不通用,如gettimeofday。只能在特定的系统上使用,这样就不能移植了。
可以在可以使用的系统上使用gettimeofday,而不能使用的系统上使用另一种方式。
1. 代码如下:
#include <stdio.h>#include <sys/time.h>#include <time.h>#include "config.h"double get_epoch(){ double sec; #ifdef HAVE_GETTIMEOFDAY struct timeval tv; gettimeofday(&tv, NULL); sec = tv.tv_sec; sec += tv.tv_usec / 1000000.0; #else sec = time(NULL); #endif return sec;}int main(int argc, char* argv[]){ printf("%f\n", get_epoch()); return 0;}上述config.h为生成的文件。通过#ifdef来采用某些代码。
2. autoscan
configure.scan内容如下:
# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.68])AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.AC_CHECK_HEADERS([sys/time.h])# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CHECK_FUNCS([gettimeofday])AC_CONFIG_FILES([Makefile])AC_OUTPUT可见,增多了AC_CHECK_HEADERS与AC_CHECK_FUNCS宏,用于检测系统是否支持该头文件与函数。不要忘记增加
AM_INIT_AUTOMAKE宏,修改如下:
AC_PREREQ([2.68])AC_INIT([main], [1.0], [BUG-REPORT-ADDRESS])AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])AM_INIT_AUTOMAKE(hello, 1.0)# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.AC_CHECK_HEADERS([sys/time.h])# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CHECK_FUNCS([gettimeofday])AC_CONFIG_FILES([Makefile])AC_OUTPUT
3. autoheader
autoheader后形成config.h.in模板,而config.status根据此模板生成config.h。config.h.in部分内容如下:
/* Define to 1 if you have the `gettimeofday' function. */#undef HAVE_GETTIMEOFDAY/* Define to 1 if you have the <inttypes.h> header file. */#undef HAVE_INTTYPES_H4. configure
config.h部分内容如下:
#define HAVE_GETTIMEOFDAY 1/* Define to 1 if you have the <inttypes.h> header file. */#define HAVE_INTTYPES_H 15. 运行
root@nova-controller:/home/spch2008/AutoMake# ./hello 1381306762.538480
注意:源文件要引入头文件config.h。这样,代码具有了可移植性。在生成Makefile前,检测系统环境,形成config.h头文件。
参考:http://www.lugod.org/presentations/autotools/presentation/autotools.pdf
- Linux Makefile自动生成--config.h
- Linux Makefile自动生成--config.h
- linux下的C语言开发(自动编译工具和config.h文件生成)
- Linux下自动生成 Makefile
- linux下makefile自动生成
- Linux Makefile自动生成--实例
- Linux Makefile自动生成--实例
- linux下自动生成Makefile
- 生成config.h
- linux下的Makefile的自动生成
- 自动生成Linux下Makefile全攻略
- 自动生成Linux下Makefile全攻略
- linux下的Makefile的自动生成
- Linux Makefile自动生成的运行步骤
- Linux Makefile自动生成的运行步骤
- 自动生成Linux下Makefile全攻略
- Linux下自动生成makefile文件
- Linux Makefile自动生成--总体流程
- begin
- 二维数组——两个数和的最大值
- Grails教程之--我的理解
- poj 2955 区间DP
- Android五大布局
- Linux Makefile自动生成--config.h
- __declspec(dllexport)和__declspec(dllimport)
- Box2dの碰撞筛选
- oracle异构链接selserver查询报错ORA-00904.列名一定加双引号
- linux kernel接收包处理流程 -- 从网卡到进入3层协议栈
- 监控 SQL Server 的运行状况
- node-webkit工程搭建
- 如何用Revit API从无到有创建构建的类型对象?
- hdu 2298 Toxophily 公式 或者 三分+二分。