介绍
Linux中的./configure,make到底在干嘛?
- ./configure
configure是一个脚本,由autoconf自动生成,用于检测当前系统环境是否满足安装所需条件。它最终会生成makefile文件 - make
make是一个命令,使用makefile进行编译源码 - make install
表示运行"目标为install的make命令",也就是将编译后的结果赋值到相应目录里
AutoTools
- autoscan
- aclocal
- autoconf
- autoheader
- automake
使用例子
- 创建目录并进入
mkdir helloAutoConf
cd helloAutoConf
- 创建main.c文件
#include <stdio.h>
int main(){
printf("hello world\n");
return 0;
}
- autoscan扫描
- 将生成的configure.scan改名为configure.ac
- 编辑configure.ac文件
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE(1.0)
AC_CONFIG_FILES([Makefile])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
- aclocal,生成acclocal.m4文件
- autoconf,生成configure脚本
- autoheader,生成config.h.in文件
- 创建Makefile.am文件
bin_PROGRAMS=hello
hello_SOURCES=main.c
- bin_PROGRAMS =
bin_PROGRAMS用于指定要生成的可执行程序文件,可执行文件在安装时需要被安装到系统中,如果不想要安装到系统中,需要用noinst_PROGRAMS来代替
- xxx_SOURCES =
xxx_SOURCES表示生成可执行应用程序所用的源文件,这里注意,xxx_是由前面的bin_PROGRAMS指定的,如果前面是生成example,那么这里就是example_SOURCES,其它的类似标识也是一样
- xxx_CPPFLAGS =
xxx_CPPFLAGS 这和Makefile文件中一样,表示C语言预处理参数
- xxx_LDFLAGS =
xxx_LDFLAGS 连接的时候所需库文件的标识,这个也就是对应一些如-l,-shared等选项
- noinst_HEADERS =
这个表示该头文件只是参加可执行文件的编译,而不用安装到安装目录下。如果需要安装到系统中,可以用include_HEADERS来代替
- INCLUDES =
INCLUDES 定义链接时所需要的头文件及引用的头文件目录
- xxx_LDADD =
xxx_LDADD 定义链接时所需要的库文件
- automake --add-missing
- 创建缺失文件夹
- automake --add-missing
- ./configure
- make
- ./hello
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。