有朋友反映楼下贴的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, ...);
}