编译动态库和静态库的Makefile模板

来源:互联网 发布:心动网络 笔试题目 编辑:程序博客网 时间:2024/05/21 17:07

参考:linux编译动态库和静态库的makefile示例

# 1、准备工作,编译方式、目标文件名、依赖库路径的定义。CC = gccCFLAGS  := -w -g -WallLIB = libltkc.so HDRS = \    version.inc     \    ltkc.h          \    ltkc_base.h     \    ltkc_connection.h   \    ltkc_frame.h        \    ltkc_platform.h     \    ltkc_xmltext.h      \OBJS = \    ltkc_array.o        \    ltkc_connection.o   \    ltkc_element.o      \    ltkc_encdec.o       \    ltkc_error.o        \    ltkc_framedecode.o  \    ltkc_frameencode.o  \    ltkc_frameextract.o \    ltkc_hdrfd.o        \    ltkc_xmltextencode.o    \    ltkc_xmltextdecode.o    \    ltkc_typeregistry.o \INC= -I /usr/include/libxml2# 依赖的lib名称# DEPEND_ON_LIB = -lxmlllrp -lxml2DEPEND_ON_LIB = -lxml2all : $(LIB)# 2. 生成.o文件 %.o:%.c    $(CC) $(CFLAGS) -c $< -o $@ $(INC) $(DEPEND_ON_LIB)    @echo "-----"# 3. 生成动态库文件$(LIB):$(OBJS)    $(CC) $(CFLAGS) -shared -o $@ $(OBJS)# 4. 删除中间过程生成的文件 clean:    rm -f $(OBJS) $(TARGET) $(LIB)

测试动态库

1、在测试过程中,经常会报错:找不到.so文件。一种简单的解决方法如下:

cannot open shared object file: No such file or directory

在linux终端输入如下命令:

export LD_LIBRARY_PATH=/home/shaoxiaohu/lib:LD_LIBRARY_PATH:

更多解决方法可参考:Linux下gcc编译生成动态链接库*.so文件并调用它的第4部分。

参考:
1]:3种方法加载到系统动态库
2]: Linux下gcc编译生成动态链接库*.so文件并调用它的第4部分

阅读全文
0 0
原创粉丝点击