乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
C 1.21 工具 autoconf/automake
2018-06-17 08:23:04
89
0
0
admin
> 为大型项目生成configure,make 的工具 #安装 ``` yum -y install autoconf yum -y install automake ``` #大致介绍 1 用**autoscan**命令扫描代码,生成**configure.scan**文件 > 这个文件配置了要做什么检查,比如依赖环境好不好,文件全不全 2 编辑**configure.scan**,然后重命名为**configure.ac** 3 跑**aclocal** 命令读取**configure.ac**生成**aclocal.m4**脚本 >这个是后期autoconf需要的,m4是一种古老的语言 4 跑**autoconf**命令读取**configure.ac**和**aclocal.md** 生成**configure**脚本 > 这就是著名的configure脚本 5 跑**autoheader**命令生成生成**config.h.in** > 后面automake 需要 6 编辑**Makefile.am**文件 7 跑**automake** 生成Makefile.in 8 configure/make/make install *** **假设我们有以下code** my_h.h ``` char *hw = "hello world"; ``` print_hw.c ``` #include <stdio.h> #include "my_h.h" void p(void) { printf("%s\n",hw); } main() { p(); } ``` **生成模板文件** 跑命令autoscan 会扫描当前目录并生成configure.scan 文件 ``` autoscan ``` **修改configure.scan并改名为configure.ac** ``` # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) #自动生成,autoconf版本信息 AC_INIT([hello], [1.0], [leozhouyj@126.com]) #初始化,包名,版本,bug提交地址 AM_INIT_AUTOMAKE(myexe,1.0) #因为后续有automake 操作,所以必须再给automake 配置一遍 AC_CONFIG_SRCDIR([print_hw.c]) #找源代码 AC_CONFIG_HEADERS([config.h]) #给autoheader看的配置,用于生成config.h # Checks for programs. AC_PROG_CC #指定编译器,默认gcc # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) #因为后续有automake 操作,所以必须再给automake 配置一遍 AC_OUTPUT() #用来设定所要生成的文件 ``` **用aclocal 命令读取condigure.ac文件然后生成aclocal.m4文件** *m4是一种古老的语言,我们不用管它* ``` aclocal ``` **运行autoconf 生成configure脚本** ``` autoconf ``` **编辑Makefile.am** 这里只是简单案例 ``` AUTOMAKE_OPTIONS=foreign #这个配置关于automake 的检查 #foreign 只检查运行所必须的东西 #gnu 检查是否满足gnu标准,默认是这个 #gnits 检查的东西更多 #可执行文件配置: bin_PROGRAMS=myexe #要制作的可运行文件名,如有多个用空格分开 #如果只想编译,不想装进系统,用noinst_PROGRAMS myexe_SOURCES=print_hw.c my_h.h #依赖的文件 ``` **跑automake** 这里加上--add-missing参数,把一些缺少的文件补上 ``` automake --add-missing ``` **configure/make/make install** *程序被安装在了/usr/local/bin/* ``` [root@test m]# ls -l /usr/local/bin/myexe -rwxr-xr-x. 1 root root 11240 May 10 21:33 /usr/local/bin/myexe ```
上一篇:
C 1.2 工具 make
下一篇:
C 2.00 函数库limit.h
文档导航