日期:2014-05-16  浏览次数:20745 次

动态连接库和静态连接库的问题 在线等待.......!!!
比如有这些个文件 a.c b.c d.c
然后这些文件做成一个静态连接库m.a
如下:
SRC = a.c b.c d.c
OBJ = $(SRC:%.c=%.o)
LIB = m.a

all: $(SRC) $(OBJ)
$(AR) ro $(LIB) $(OBJ)
$(OBJ): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@ 
但是现在有个问题是:d.c需要使用到一个动态连接库中(如-lssl)的函数,所以应该将动态连接库也连接进来.
那么请问上面的编译命令应该怎么修改,才能达到我想要的效果呢?

------解决方案--------------------
但是现在有个问题是:d.c需要使用到一个动态连接库中(如-lssl)的函数,所以应该将动态连接库也连接进来. 
那么请问上面的编译命令应该怎么修改,才能达到我想要的效果呢?
====
这个问题应该在链接阶段去解决!原因分析如下:
1. 楼主提供的产品是程序库,只需要告诉客户m.a需要用libssl就可以了;
2. 动态链接或静态链接应该让客户去选择;
3. 更好的选择是同时提供库的动态和静态版本;
还有几个个建议:
1. m.a的命名不是很规范,通常应该以lib开头,比如libc, libxml2, libz
2. 建议使用GNU的libtool,可以很好的进行版本维护
------解决方案--------------------
all: $(SRC) $(OBJ)
$(AR) ro $(LIB) $(OBJ) 

这个只是链接阶段,不需要用到库,所以报错不是因为没有-lssl的原因,建议把报错原因贴出来。
------解决方案--------------------
哦哦~~~~~打错了~~