静态库制作和使用实践,见上一篇博文 http://blog.csdn.net/QQ_26437925/article/details/51541717
linux 动态库 .so 实践如下: 基本文件同上一个静态库的文件,目录如下
除了Makefile文件外,其他文件都是相同的。动态库生成需要使用的是 gcc -shared -fPIC 而不是 静态库的ar名利
Makefile
.PHONY: build test cleanCC=gccOBJ_DIR=./objLIB_DIR=./libHEADERS=-I./includeDEBUG=-g -ggdbWALL=-Wall -WCFLAGS=$(WALL) $(DEBUG)LIB_CC=$(CC) $(CFLAGS) $(HEADERS)LIB_OBJ = $(addPRefix $(OBJ_DIR)/, my_math.o my_print.o)prepare: @-if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi @-if [ ! -d $(LIB_DIR) ]; then mkdir $(LIB_DIR); fibuild:prepare $(LIB_DIR)/libmylib.so$(LIB_DIR)/libmylib.so:$(LIB_OBJ) $(CC) -shared -fPIC $^ -o $@$(OBJ_DIR)/%.o:src/%.c $(LIB_CC) -fPIC -c $< -o $@test:a.outa.out:test.c $(LIB_CC) test.c -L$(LIB_DIR) -lmylib clean: @-rm -rf $(OBJ_DIR) @-rm $(LIB_DIR)/libmylib.so @-rm -rf $(LIB_DIR) @-rm a.out仍然是如下的几个make命令
make build make testmake clean动态库找不到的解决方法,参考如下博文 http://blog.csdn.net/lqhbupt/article/details/7875112
ldd命令可以打印出可执行文件的共享库文件,一个shell脚本,通过ld-linux.so实现,ld-linux.so先于可执行文件执行,获取控制权,可查看可执行文件的共享库依赖关系。
直接把.so复制到/usr/lib下,并通过ldconfig命令生效
ldd命令查看并运行
新闻热点
疑难解答