Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65197
  • 博文数量: 15
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-04 17:12
个人简介

It

文章分类

全部博文(15)

文章存档

2015年(13)

2014年(2)

我的朋友

分类: LINUX

2015-06-01 14:56:45

欢迎讨论指正。

分析环境:
nginx的源码版本: 1.5.6,
linux CentOS  kernel 2.6.32-431.el6.i686

开源软件,编译及安装的一般三部曲即:

  1.     configure
  2.     make
  3.     install

nginx的configure很有特点,其提供了很多复杂功能。该configure是shell脚本文件,完成如下功能:
参数解析及处理;
操作系统检测以及所依赖库的检测;
中间目录及文件的产生,会产生c源文件、Makefile文件等;

特别是在检查 系统支持哪些特性是,非常有特色,值得学习。
比如检查是否支持 epoll ,就是 通过 feature 脚本,生成一个NGX_AUTOTEST.c,编译并运行,然后检测是否有错。

configure 内容如下:

点击(此处)折叠或打开

  1. #!/bin/sh

  2. # Copyright (C) Igor Sysoev
  3. # Copyright (C) Nginx,


  4. LC_ALL=C
  5. export LC_ALL

  6. # 处理命令行选项
  7. . auto/options
  8. #
  9. . auto/init
  10. . auto/sources

  11. test -d $NGX_OBJS || mkdir $NGX_OBJS

  12. echo > $NGX_AUTO_HEADERS_H
  13. echo > $NGX_AUTOCONF_ERR

  14. echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H


  15. if [ $NGX_DEBUG = YES ]; then
  16. have=NGX_DEBUG . auto/have
  17. fi


  18. if test -z "$NGX_PLATFORM"; then
  19. echo "checking for OS"

  20. NGX_SYSTEM=`uname -s 2>/dev/null`
  21. NGX_RELEASE=`uname -r 2>/dev/null`
  22. NGX_MACHINE=`uname -m 2>/dev/null`

  23. echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE"

  24. NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";

  25. case "$NGX_SYSTEM" in
  26. MINGW32_*)
  27. NGX_PLATFORM=win32
  28. ;;
  29. esac

  30. else
  31. echo "building for $NGX_PLATFORM"
  32. NGX_SYSTEM=$NGX_PLATFORM
  33. fi

  34. . auto/cc/conf

  35. if [ "$NGX_PLATFORM" != win32 ]; then
  36. . auto/headers
  37. fi

  38. . auto/os/conf

  39. if [ "$NGX_PLATFORM" != win32 ]; then
  40. . auto/unix
  41. fi

  42. . auto/modules
  43. . auto/lib/conf

  44. case ".$NGX_PREFIX" in
  45. .)
  46. NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx}
  47. have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
  48. ;;

  49. .!)
  50. NGX_PREFIX=
  51. ;;

  52. *)
  53. have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
  54. ;;
  55. esac

  56. if [ ".$NGX_CONF_PREFIX" != "." ]; then
  57. have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define
  58. fi

  59. have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define
  60. have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
  61. have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
  62. have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
  63. have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define

  64. have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define
  65. have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
  66. . auto/define
  67. have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\""
  68. . auto/define
  69. have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\""
  70. . auto/define
  71. have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\""
  72. . auto/define
  73. have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\""
  74. . auto/define

  75. . auto/make
  76. . auto/lib/make
  77. . auto/install

  78. # STUB
  79. . auto/stubs

  80. have=NGX_USER value="\"$NGX_USER\"" . auto/define
  81. have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define

  82. . auto/summary



阅读(1322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~