在Linux/Unix下把自己写的函数做成静态、动态库文件

      有朋友反映楼下贴的log_fun和dll_run 不知道如何使用,不好意思,当时没有写详细使用方法,今天结合实际例子补写出来log_fun的使用方法。
       先编译做成静态和动态库
//下面是拷贝我机器上测试时候写的makefile
HOMEDIR   = /root/test
USERLIBDIR= $(HOMEDIR)/lib
USERINCLUDE = $(HOMEDIR)/pub_inc

INCLUDE = -I$(USERINCLUDE)

CFLAGS= -c -O -Wall -march=i686 -fPIC

.c.o:
        cc $(INCLUDE) $(CFLAGS)  $<

default:  logerr solog

LOG_OBJ= log_func.o
logerr:$(LOG_OBJ)

        ar rcs $(USERLIBDIR)/lib$@.a $(LOG_OBJ)

SO_OBJ = log_func.o errproc.o
solog:$(SO_OBJ)
        cc -shared -W1,-soname,libsolog.so -o $(USERLIBDIR)/lib$@.so.1.0.0 $(SO_OBJ) -lc


 make就OK.

  先写个简单的测试驱动程序,如下:
       
 #include <stdio.h>
#include <stdlib.h>
#include "log_def.h"

int main(void){

  FILE *fp;
  puts( "Testing err_write_log" );
  if (( fp = fopen("foo", "r")) == NULL  ){
        write_log(ERROR_LOG,"%s|%d:打开文件不存在! ",__FILE__,__LINE__);

  }
  exit ( EXIT_SUCCESS );
}

编译加载静态库文件
gcc test.c -o test lib/liblogerr.a
载动态库文件
gcc test.c -o test lib/libsolog.so

补充一下,在C++环境下,要调用编译好的C库,须声明:
extern "C"
{
          int write_log(int iLog_flag,const char *pFormat, ...);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值