<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } H3 { margin-bottom: 0.21cm } H3.western { font-family: "Bitstream Vera Sans", sans-serif } H3.cjk { font-family: "Bitstream Vera Sans"; font-style: normal } H3.ctl { font-family: "Bitstream Vera Sans" } A:link { so-language: zxx } -->
Autoconf 使用范例
1 ,最简单程序编译
1) 首先编写了源代码test.c, 如下:
int main()
{
printf("hello world!/n");
return 0;
}
2) 生成configure.in 或者configure.ac 。
运行autocan 生成configure.scan ,稍作修改,事实上只修改了两处。
一处是 AC_INIT ,定义包名,版本号和著作人。
另一处是添加了AM_INIT_AUTOMAKE ,这个是automake 工具的宏,有兴趣可以google 一下。
AC_PREREQ([2.63])
AC_INIT([hello], [0.10], [zhongsc@thunderst.com])
AM_INIT_AUTOMAKE(foreign)
AC_CONFIG_SRCDIR([test.c])
AC_CONFIG_HEADERS([config.h])
# 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_CONFIG_FILES([Makefile])
AC_OUTPUT
3 )生成Makefile.am 。
这个得自己写,不过一般很简单,如下:
bin_PROGRAMS = hello
hello_SOURCES = test.c
bin_PROGRAMS 是定义生成的可执行文件的名称。
hello_SOURCES 是定义生成可执行文件hello, 需要通过哪些源文件去编译。如果生成多个二进制文件如A, B ,则需要定义A_SOURCE, B_SOURCE. 如果有n 个c 文件生成一个可执行文件,只需将这些文件一一列出以空格分开就可以了,如A_SOURCE= a1.c a2.c a3.c
4) 有了test.c Makefile.am configure.in, 则可以执行自动编译工具了。
运行autoreconf -i → ./configure –prefix=/usr → make → make install
可以通过make dist 生成tar 包。
2 , 简单的 gtk 程序编译。
1) 首先还是写源码 test.c 如下:
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "delete-event", gtk_main_quit, NULL);
gtk_window_set_default_size(GTK_WINDOW(window), 200,200);
gtk_widget_show(window);
gtk_main();
return 0;
}
2 )生成 configure.in.
需要在原来的基础上再做修改,添加了 3 行:
PKG_CHECK_MODULES(GTK, gtk+-2.0)
AC_SUBST([GTK_CFLAGS])