shell编程之autogen.sh文件分析

在这里插入图片描述

扩展内容:

【``】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。
比如 dirname $0, 就表示需要执行 dirname $0 这个命令
【""】 , 被双引号括起来的内容, 表示一个字符串,里面 出现 $ (美元号: 表示取变量名)
【’‘】, 被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的 三个特殊字符。

关于2>&1的含义
含义:将标准错误输出重定向到标准输出,0为标准输入,1为标准输出,2为标准出错。
错误写法:2>1的写法其实是将标准错误输出重定向到名为"1"的文件里去了

各种$后跟变量名代表的含义

$$
Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!
Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$?
最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$-
显示shell使用的当前选项,与set命令功能相同
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$@ 跟$*类似,但是可以当作数组用
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

autoheader命令
使用autoheader命令可以为使用configure创建C定义的模板文件。在结尾处扫描模板文件,或configure.ac文件,或configure.ina文件

使用automake的编译流程
本例只是简单的把一个hello.c文件编译成hello可执行文件,具体的步骤如下:
1、执行autoscan命令生成autoscan.log和configure.scan文件
2、mv configure.scan configure.ac且修改configure.ac(早期使用configure.in)

[plain]

  1. -*- Autoconf -*-
  2. \# Process this file with autoconf to produce a configure script.
  3. ``
  4. AC_PREREQ([2.68])
  5. AC_INIT(hello, 1.0,[email])
  6. AM_INIT_AUTOMAKE(hello, 1.0)
  7. AC_CONFIG_SRCDIR([hello.c]) #用于检测源码目录的有效性,任选一个源码文件即可
  8. AC_CONFIG_HEADERS([config.h]) #用于生成config.h文件,以便autoheader使用
  9. ``
  10. \# Checks for programs.
  11. AC_PROG_CXX
  12. AC_PROG_CC
  13. \#LT_INIT #编译libtool必须添加的两行,这里直接编译成so,故不需要
  14. \#AC_PROG_LIBTOOL
  15. \# Checks for libraries.
  16. \# Checks for header files.
  17. \# Checks for typedefs, structures, and compiler characteristics.
  18. \# Checks for library functions.
  19. ``
  20. AC_CONFIG_FILES([Makefile ]) #需要生成的所有Makefile
  21. ``
  22. AC_OUTPUT

3、使用aclocal生成aclocal.m4文件
4、执行autoconf命令生成configure文件
5、执行autoheader命令生成config.h和config.h.in
6、创建一个Makefile.am文件,内容如下:
[plain]

  1. AUTOMAKE_OPTIONS= foreign
  2. bin_PROGRAMS= hello
  3. hello_SOURCES= hello.c

7、touch NEWS README AUTHORS ChangeLog
8、执行 automake --add-missing ,Automake 会根据 Makefile.am 文件产生一些文件,包含最重要的Makefile.in

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值