LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1943|回复: 7

这样一个程序编译成动态库时makefile.am和configure.in该怎麽写?

[复制链接]
发表于 2004-11-27 11:16:24 | 显示全部楼层 |阅读模式
我的主目录是ex1,下面有一个c1.cpp的源文件,两个子目录c1和c2,下面有文件c1.h,c1.cpp和c2.h,c2.cpp,如果要生成一个动态库libex1.so,各个目录下的Makefile.am及主目录下的configure.in应该怎麽写?能否同时生成动态库和静态库(.a)?如果可以该怎麽写?谢谢!最好能给写个基本的!(请kj501帮帮忙,多谢!)
发表于 2004-11-27 18:00:29 | 显示全部楼层
仔细参考我在CU上给出的例子。如果不行,贴出来看看。
 楼主| 发表于 2004-11-27 18:42:23 | 显示全部楼层
假设主目录是ex3,下面两个子目录c1和c2,下面的文件为 c1/Cls1.h,Cls1.cpp和c2/c2.h c2/c2.cpp。
ex3下的configure.in文件内容如下:
AC_INIT(c1/Cls1.h)
AM_INIT_AUTOMAKE(ex3,0.0.1)
AC_PROG_CC
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_OUTPUT(Makefile
  c1/Makefile
  c2/Makefile
)

Makefile.am的内容:
SUBDIRS= c1 c2
INCLUDES= -I c1 c2
lib_LTLIBRARIES=libex3-1.0.la

libex3_1_0_la_SOURCES = ./c1/Cls1.h ./c1/Cls1.cpp ./c2/c2.h ./c2/c2.cpp
libex3_1_0_la_LIBADD= ./c1/libc1.la ./c2/libc2.la

c1下的Makefile.am:
noinst_LTLIBRARIES=libc1.la
libc1_la_SOURCES=Cls1.h Cls1.cpp

c2下的Makefile.am:
noinst_LTLIBRARIES = libc2.la
libc2_la_SOURCES = c2.cpp c2.h

把文件ltmain.sh拷贝到ex3目录下。
to kj501: 按照你在CU上的帖子编译多级目录的可执行文件,没有问题,但是在编译共享库的时候出错?上面的文件写的哪个地方有问题,麻烦你给看看,多谢!
发表于 2004-11-27 20:28:38 | 显示全部楼层
你是在乱写一气,不出问题才怪。
 楼主| 发表于 2004-11-27 21:08:32 | 显示全部楼层
那应该怎么写啊,能给写一下吗?多谢!
 楼主| 发表于 2004-11-27 21:12:21 | 显示全部楼层
或者提供一些有这方面相关的资料看看,谢谢!
发表于 2004-11-27 21:15:48 | 显示全部楼层
看看置顶的论坛索引中给出的链接,先建立一些基本概念。然后再结合例子,慢慢琢磨。
 楼主| 发表于 2004-11-27 21:52:16 | 显示全部楼层
to kj501:麻烦你能就我上面说的这个简单的例子给写写吗?因为时间比较紧,这样我结合一些文档看的时候也能理解的快一些,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表