- 论坛徽章:
- 1
|
继续完善这个例子,论坛里有人问,如何生成静态库,并连接.
完善hello.c这个例子
当前目录
|- src 目录
|- hello.c 文件
|- include 目录
|- hello.h文件
|- lib 目录
|- test.c文件 此文件用来生成 libhello.a
在当前目录 编写Makefile.am
在include目录下 编写hello.h
- extern void print(char *);
复制代码
在lib目录下编写test.c
- #include <stdio.h>
- void print(char *msg)
- {
- printf("%s\n",msg);
- }
复制代码
在lib目录下编写Makefile.am
- noinst_LIBRARIES=libhello.a
- libhello_a_SOURCES=test.c
复制代码
这里noinst_LIBRARIES 的意思是生成的静态库 ,不会被make install 安装
然后指定libhello.a的源文件test.c
在src目录下编写hello.c
- #include "hello.h"
- int main()
- {
- print("haha"); //这里是静态库里的print函数
- return 0;
- }
复制代码
在src目录下编写Makefile.am
- INCLUDES= -I../include
- bin_PROGRAMS=hello
- hello_SOURCES=hello.c
- hello_LDADD=../lib/libhello.a
复制代码
首先指定头文件的位置 ../include
然后指定要生成执行文件 hello
然后指定源代码文件 hello.c
最后添加静态库的位置 ../lib/libhello.a
按照我首篇帖子的方式.
执行autoscan 生成configure.scan
修改该文件
按照首篇帖子修改.
然后不同之处
需要添加一行:AC_PROG_RANLIB
- # -*- Autoconf -*-
- # Process this file with autoconf to produce a configure script.
- AC_PREREQ(2.59)
- AC_INIT(hello,1.1,[miaoquan@nou.com.cn])
- AM_INIT_AUTOMAKE
- AC_CONFIG_SRCDIR([src/hello.c])
- AC_CONFIG_HEADER([config.h])
- # Checks for programs.
- AC_PROG_CC
- # Checks for libraries.
- AC_PROG_RANLIB
- # Checks for header files.
- # Checks for typedefs, structures, and compiler characteristics.
- # Checks for library functions.
- #AC_CONFIG_FILES([Makefile
- # lib/Makefile
- # src/Makefile])
- AC_OUTPUT([Makefile
- lib/Makefile
- src/Makefile])
复制代码
mv configure.scan configure.in
touch NEWS README AUTHORS ChangeLog
执行autoreconf -fvi
生成configure.执行configure生成Makefile..
后面同上...
[ 本帖最后由 mq110 于 2006-7-2 23:25 编辑 ] |
|