看到
論壇上有朋友在問(wèn)如何在autotools中添加另外第三方提供的動(dòng)態(tài)庫(kù)的問(wèn)題,發(fā)現(xiàn)本版以前講autotools的沒(méi)有講過(guò)這方面的內(nèi)容, 所以就在網(wǎng)上搜索了一下, 自己也試驗(yàn)了一下,找到如下方法可以解決這個(gè)問(wèn)題。
希望對(duì)大家有用.
1. 首先建立一個(gè)動(dòng)態(tài)庫(kù)
cd /usr/local/
mkdir test
cd test
vim hhh.c
如下:
hhh.c
- void hello()
- {
- printf("in hello\n");
- }
復(fù)制代碼然后使用如下
命令來(lái)生成庫(kù)
- gcc -fPIC -c hhh.c -o libhhh.o
- gcc -shared -W1 -o libhhh.so libhhh.o -lc
復(fù)制代碼然后再將當(dāng)前路徑加入到庫(kù)查找路徑中去:
- export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
復(fù)制代碼現(xiàn)在就建立了一個(gè)動(dòng)態(tài)庫(kù)了.
接下來(lái)使用剛剛建立的這個(gè)動(dòng)態(tài)庫(kù).
2. 使用autotools將該動(dòng)態(tài)庫(kù)加入到自己的工程中去
cd /home/scutan/auto
mkdir src
在src/目錄中編輯test.c文件:
test.c
- #include<stdio.h>
- int main()
- {
- printf("main\n");
- hello();
- return 0;
- }
復(fù)制代碼然后回到上一層目錄cd ../
建立Makefile.am文件 (auto/Makefile.am)
- bin_PROGRAMS=test
- test_SOURCES=src/test.c
- test_LDADD=/usr/local/test/libhhh.so
復(fù)制代碼然后執(zhí)行命令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])
復(fù)制代碼然后將該文件名改為configure.in
- mv configure.scan configure.in
復(fù)制代碼然后執(zhí)行如下命令建立必要的文件
- touch NEWS README AUTHORS ChangeLog
復(fù)制代碼最后再執(zhí)行
此時(shí)就可以使用./configure了.
./configure
make
make install
./test 執(zhí)行就可看到效果.
然后再make dist打包..
[
本帖最后由 scutan 于 2007-12-12 15:37 編輯 ]
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。