linux 下动态库、静态库嵌套使用

linux下静态库嵌套使用前提是你会在linux下调用静态库和动态库和Makfile编程(当然不会Makfile直接在终端命令也成)本例是先由StringLen.h,StringLen.c生成librak.a然后利用StringLen2.h,StringLen2.并调用librak.a生成librak2.a最后利用StringLen3.h,StringLen3.c调用librak2.a 生成librak3.so————————————————————————————–#StringLen.h:#ifndef _STRINGLEN_H__#define _STRINGLEN_H__int Strlen(char *pStr);#endif#StringLen.c:#include<stdio.h>#include<assert.h>#include "StringLen.h"int Strlen(char *pStr){ unsigned long ulLength; assert(NULL != pStr); ulLength = 0; while(*pStr++) { ulLength++; } return ulLength;}gcc -Wall -c *.car rc librak.a *.o————————————————————————————#StringLen2.h:#ifndef _STRINGLEN_H2__#define _STRINGLEN_H2__#ifdef __UDT#include "StringLen.h"#endifint Strlen2(char *pStr);#endif#StringLen2.c:#include<stdio.h>#include<assert.h>#include "StringLen2.h"int Strlen2(char *pStr){ unsigned long ulLength; #ifdef __UDT ulLength = Strlen(pStr); #else ulLength = -1; #endif return ulLength;} gcc -Wall -c *.c -D__UDTar rc librak2.a *.o—————————————————————————————–#StringLen3.h:#ifndef _STRINGLEN_H3__#define _STRINGLEN_H3__#ifdef ___UDT#include "StringLen2.h"#endifint Strlen3(char *pStr);#endif#StringLen3.c#include<stdio.h>#include<assert.h>#include "StringLen3.h"int Strlen3(char *pStr){ unsigned long ulLength; #ifdef ___UDT ulLength = Strlen(pStr); #else ulLength = -1; #endif return ulLength;}Makefile:vpath %.h ./SourceCXX=gccobjects=StringLen3.oCFLAGS_H=-I./SourceCFLAGS_D=-D___UDTCFLAGS_O=$(CFLAGS_H) $(CFLAGS_D)CFLAGS_SO=-L. -lrak2 -lrak $(CFLAGS_O)libDll.so:$(objects) $(CXX) -ggdb -fPIC -shared -o $@ $^ $(CFLAGS_SO)StringLen3.o:StringLen3.c StringLen3.h $(CXX) -c $< $(CFLAGS_O).PHONY:cleanclean: @rm -r libDll.so *.o ——————————————————————————–最后main.c调用libDll.so就ok了

上帝助自助者。

linux 下动态库、静态库嵌套使用

相关文章:

你感兴趣的文章:

标签云: