Chinaunix首页 | 论坛 | 博客
  • 博客访问: 292465
  • 博文数量: 77
  • 博客积分: 1422
  • 博客等级: 上尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-21 12:39
文章分类
文章存档

2011年(1)

2009年(3)

2008年(73)

我的朋友

分类:

2008-06-30 21:59:13

自己写的如何在autotools中添加另外第三方提供的动态库的问题
 
1. 首先建立一个动态库
cd /usr/local/
mkdir test
cd test
vim hhh.c
如下:

hhh.c

void hello()
{
        printf("in hello\n");
}

然后使用如下命令来生成库

gcc -fPIC -c hhh.c -o libhhh.o
gcc -shared -W1 -o libhhh.so libhhh.o -lc

然后再将当前路径加入到库查找路径中去:

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

现在就建立了一个动态库了.
接下来使用刚刚建立的这个动态库.

2. 使用autotools将该动态库加入到自己的工程中去
cd /home/scutan/auto
mkdir src

在src/目录中编辑test.c文件:
test.c

#include
int main()
{
        printf("main\n");
        hello();
        return 0;
}

然后回到上一层目录cd ../
建立Makefile.am文件 (auto/Makefile.am)

bin_PROGRAMS=test
test_SOURCES=src/test.c
test_LDADD=/usr/local/test/libhhh.so

然后执行命令autoscan生成configure.scan
修改成如下所示:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(test,1.1.1,[chinatan])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/test.c])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CC


# Checks for libraries.
AC_CHECK_LIB([hhh], [main])
# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.


AC_OUTPUT([Makefile])

然后将该文件名改为configure.in

mv configure.scan configure.in

然后执行如下命令建立必要的文件

touch NEWS README AUTHORS ChangeLog

最后再执行

autoreconf -fvi

此时就可以使用./configure了.

./configure
make
make install

./test 执行就可看到效果.

然后再make dist打包..
阅读(954) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~