GNU自动化工具使用全过程详解,以及在线手册
[root@localhost test3]# cat add.h
#ifndef _ADD_H_
#define _ADD_H_
extern int add(int, int);
#endif
[root@localhost test3]# cat add.c
#include "add.h"
int add(int a, int b)
{
return a + b;
}
[root@localhost test3]# cat main.c
#include
#include "add.h"
int main()
{
int a, b, c;
a = 5;
b = 6;
c = add(a, b);
printf("c = %d\n", c);
return 0;
}
[root@localhost test3]# gcc -shared -o libadd.so add.c
1、执行autoscan
[root@localhost test3]# autoscan
[root@localhost test3]# ls
add.c add.h autoscan.log configure.scan main.c
2、编辑configure.in
[root@localhost test3]# mv configure.scan configure.in
[root@localhost test3]# cat configure.in
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([main], [1.0], [yww680169@126.com])
AM_INIT_AUTOMAKE(main, 1.0)
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
AC_CHECK_LIB(add, add)
# Checks for header files.
AC_CHECK_HEADERS([add.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)
3、执行aclocal
[root@localhost test3]# aclocal
4、执行autoconf
[root@localhost test3]# autoconf
5、执行autoheader
[root@localhost test3]# autoheader
6、新建Makefile.am
[root@localhost test3]# cat Makefile.am
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=main
main_SOURCES=main.c
main_LDADD=libadd.so
7、执行automake
[root@localhost test3]# automake
configure.in:6: required file `./install-sh' not found
configure.in:6: `automake --add-missing' can install `install-sh'
configure.in:6: required file `./missing' not found
configure.in:6: `automake --add-missing' can install `missing'
Makefile.am: required file `./depcomp' not found
Makefile.am: `automake --add-missing' can install `depcomp'
[root@localhost test3]# automake --add-missing
configure.in:6: installing `./install-sh'
configure.in:6: installing `./missing'
Makefile.am: installing `./depcomp'
[root@localhost test3]# automake --add-missing
7、执行./configure
[root@localhost test3]# ./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 for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
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 for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for add in -ladd... no
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking add.h usability... no
checking add.h presence... no
checking for add.h... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
8、make
[root@localhost test3]# make
make all-am
make[1]: Entering directory `/home/xiaowan/Desktop/test3'
gcc -DHAVE_CONFIG_H -I. -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
mv -f .deps/main.Tpo .deps/main.Po
gcc -g -O2 -o main main.o libadd.so
make[1]: Leaving directory `/home/xiaowan/Desktop/test3'
9、make install
[root@localhost test3]# make install
make[1]: Entering directory `/home/xiaowan/Desktop/test3'
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
/usr/bin/install -c main '/usr/local/bin'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory `/home/xiaowan/Desktop/test3'
10、导出环境变量(在当前目录下执行命令需导出环境变量)
[root@localhost test3]# export LD_LIBRARY_PATH=$PWD
11、执行./main
[root@localhost test3]# ./main
c = 11
http://blog.chinaunix.net/uid-26133817-id-4281336.html
在线手册:
http://www.gnu.org/software/automake/manual/automake.html#API-Versioning
最新文章
- MySQL入门02-MySQL二进制版本快速部署
- 剑指Offer:面试题22——栈的压入,弹出序列(java实现)
- javascript语法体系
- 转帖:使用TortoiseGit处理代码冲突
- pythn BeautifulSoup
- maven将本地jar包导入本地仓库
- Windows Server 在IIS上创建安全网站
- mybatis源码解析之Configuration加载(二)
- Oracle Base64加解密
- GDI+_从Bitmap里得到的Color数组值分解
- Android为TV端助力 转载:android自定义view实战(温度控制表)!
- P1638 逛画展(直尺法)
- window下的Django入门
- Hive 严格模式与非严格模式
- 2017上海C++面试
- [转发]如何在ASP.NET的web.config配置文件中添加MIME类型
- 用 python 修改文件中指定的行数
- 开源大数据技术专场(上午):Spark、HBase、JStorm应用与实践
- skynet1.0阅读笔记_skynet的启动
- bzoj2818 Gcd(欧拉函数)