标签:style blog color io os 使用 ar for 文件
项目一 helloworld
整个基础上仅有一个helloworld.c文件,功能也非常简单,只是向屏蔽输出一句hello。
新建一个helloworld目录,然后在里面新建一个文件helloworld.c,内容为:
#include <stdio.h> int main(int argc, char **agrv) { printf("Hello, Merlin\n"); return 0; }
执行命令autoscan生成一个架构configure.scan,将其重新命名为configure.ac(新版本使用ac后缀名,不再使用in后缀),此时目录中含有以下文件
merlin@tfAnalysis:~/t/hellworld$ ls autoscan.log configure.ac helloworld.c
原configure.scan的内容为:
# -*- 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([helloworld.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_OUTPUT
将其修改为以下样子:
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT(helloworld, 0.1, tfa2012@foxmail.com) AC_CONFIG_SRCDIR(helloworld.c) #AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE # 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(Makefile)
AC_CONFIG_SRCDIR(helloworld.c)的功能是在./configure时检测文件helloworld.c是否存在,从而检测源码的正确性。
依次执行aclocal和autoconf两人个命令,此时文件夹中内容为:
merlin@tfAnalysis:~/t/hellworld$ ls aclocal.m4 autom4te.cache autoscan.log configure configure.ac helloworld.c
新建文件Makefile.am文件,并填写入以下内容:
AUTOMAKE_OPTIONS = foreign bin_PROGRAMS = helloworld helloworld_SOURCES = helloworld.c
执行automake --add-missing
merlin@tfAnalysis:~/t/hellworld$ automake --add-missing configure.ac:11: installing ‘./compile‘ configure.ac:8: installing ‘./install-sh‘ configure.ac:8: installing ‘./missing‘ Makefile.am: installing ‘./depcomp‘
此时文件夹中内容为:
merlin@tfAnalysis:~/t/hellworld$ ls aclocal.m4 compile depcomp Makefile.am autom4te.cache configure helloworld.c Makefile.in autoscan.log configure.ac install-sh missing
这个时候就可以使用./configure来生成Makefile文件了
merlin@tfAnalysis:~/t/hellworld$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: executing depfiles commands
编译出来试试:
merlin@tfAnalysis:~/t/hellworld$ make gcc -DPACKAGE_NAME=\"helloworld\" -DPACKAGE_TARNAME=\"helloworld\" -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"helloworld\ 0.1\" -DPACKAGE_BUGREPORT=\"tfa2012@foxmail.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"helloworld\" -DVERSION=\"0.1\" -I. -g -O2 -MT helloworld.o -MD -MP -MF .deps/helloworld.Tpo -c -o helloworld.o helloworld.c mv -f .deps/helloworld.Tpo .deps/helloworld.Po gcc -g -O2 -o helloworld helloworld.o merlin@tfAnalysis:~/t/hellworld$ ls aclocal.m4 config.log depcomp install-sh missing autom4te.cache config.status helloworld Makefile autoscan.log configure helloworld.c Makefile.am compile configure.ac helloworld.o Makefile.in merlin@tfAnalysis:~/t/hellworld$ ./helloworld Hello, Merlin
标签:style blog color io os 使用 ar for 文件
原文地址:http://www.cnblogs.com/tfanalysis/p/3967290.html