- 论坛徽章:
- 0
|
看到论坛上有朋友在问如何在autotools中添加另外第三方提供的动态库的问题,发现本版以前讲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<stdio.h>
- 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
复制代码
最后再执行
此时就可以使用./configure了.
./configure
make
make install
./test 执行就可看到效果.
然后再make dist打包..
[ 本帖最后由 scutan 于 2007-12-12 15:37 编辑 ] |
|